Lister un repertoire en c++

Fermé
Jerem - 18 avril 2006 à 21:22
 salim - 8 nov. 2007 à 12:11
Bonsoir à tous ,

Je cherche à lister l'ensemble des fichiers d'un repertoire en c++ sous GCC , j'ai trouvé plein de codes sous windows mais pas sous linux.
merci de m'éclairer
jerem

2 réponses

#include <dirent.h>
#include <stdio.h>
#include <string.h>

int isdir(char *pp)
{
struct dirent *mydir;
DIR *rep;
int idir = -1;
rep = opendir(pp);
if (rep != NULL)
{
if ((mydir = readdir(rep)))
{
idir = 0;
}
closedir(rep);
}

return idir;
}


void doAnalyseDir(char *pdir, pdestdir)
{
struct dirent *mydir;
DIR *rep;
char srcfile[256];


rep = opendir(pdir);
if (rep != NULL)
{
while ((mydir = readdir(rep)))
{
if (strcmp(mydir->d_name, ".") != 0 && strcmp(mydir->d_name, "..") != 0)
{
sprintf(srcfile, "%s/%s", pdir, mydir->d_name);
if(isdir(srcfile) == -1)
{
printf("%s\n", srcfile);
}
else
{
doAnalyseDir(srcfile);
}
}
}

closedir(rep);
}

}
5
mamiemando Messages postés 33381 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 26 novembre 2024 7 802
20 avril 2006 à 12:39
A priori il faut faire appel à une commande bash (ls en l'occurence) par exemple à l'aide de la commande execvp(). Je te suggère dans ton code de mettre un truc du genre :
#ifdef LINUX
//La section de code spécifique linux
#else
//La section de code spécifique windows
#endif

Et de compiler ton code sous linux avec :
g++ -DLINUX -W -Wall plop.c

Bonne chance
0