Comment distinguer entre fichier et repértoire!

almousafer Messages postés 7 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 25 janvier 2006 - 25 janv. 2006 à 09:33
fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 - 25 janv. 2006 à 11:34
salut tlm
Je viens d'ecrire une fonction qui parcours le répertoire passé en argument et liste son contenu (merci à Fred), mais il reste encore un pb, il ne distingue pas entre fichier et repértoire (sauf si je lui passe en argument le repertoire courant là où il se trouve ! c'est étrange!).

en effet voila le code que j'ai ecris :

#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>

#include

int main( int argc, char* argv[] )
{

if( argc < 2 )
{
std::cerr << "Usage: " << std::endl;
std::cerr << argv[0] << " DicomDirectory"
<< std::endl;
return EXIT_FAILURE;
}

std::string tmp;
DIR *dp;
dirent *ep;
struct stat buf;

dp = opendir(argv[1]);
if (dp != NULL)
{
while ((ep = readdir(dp)) != NULL)
{
tmp = ep->d_name;
std::cout<<tmp.c_str();
if (stat(tmp.c_str(), &buf))
{
buf.st_mode = 0;
buf.st_size = 0;
buf.st_atime = 0;
buf.st_mtime = 0;
buf.st_ctime = 0;
}

if (S_ISDIR(buf.st_mode))
std::cout<<" est un répértoire"<<std::endl;
else
std::cout<<" est un fichier"<<std::endl;

}
closedir (dp);

}

return EXIT_SUCCESS;
}


merci d'avance
TimCha

2 réponses

almousafer Messages postés 7 Date d'inscription mercredi 9 février 2005 Statut Membre Dernière intervention 25 janvier 2006
25 janv. 2006 à 10:29
Resalut
j'ai copié l'executable sous un autre répertoire et je l'ai executé là et ça marche bien.
Donc il ne marche bien que dans le répertoire courant ( où il se trouve) et ses sous répertoires.
est ce que qqn as une idée sur ce qui se passe?
0
fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 1
25 janv. 2006 à 11:34
Bonjour,



cette demande fait doublon avec celle-ci : http://www.cppfrance.com/forum.v2.aspx?ID=646260

qui a déjà reçu une réponse.

Cordialement

Fred Cailleau-Lepetit (http://cfred.free.fr)
0
Rejoignez-nous