Rechercher : dans
Par :

Lister un repertoire en c++

Dernière réponse le 8 nov 2007 à 12:11:43 Jerem, le 18 avr 2006 à 21:22:15 
 Signaler ce message aux modérateurs

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

Configuration: Linux Debian

Meilleures réponses pour « lister un repertoire en c++ » dans :
[MS-Dos] Lister le contenu d'un répertoire dans un fichier VoirIl peut s'avérer pratique d'effectuer le listage d'un ou plusieurs répertoires dans un fichier, afin de tenir par exemple un catalogue de fichiers. Sous MS-Dos (ou sous Windows en ouvrant une fenêtre d'invite de commande MS-Dos) il est possible...
[Windows] Obtenir la liste des fichiers d'un dossier VoirLister le contenu d'un dossier Voici une astuce simple qui permet de lister le nom des fichiers contenus dans un répertoire. Vous pourrez obtenir en un clic les titres de vos chansons, de vos photos, etc. dans un fichier...
Introduction à la STL en C++ (standard template library) VoirIntroduction Principales classes de la STL std::pair std::list std::vector std::set std::map Les iterators iterator et const_iterator reverse_iterator et const_reverse_iterator Les algorithmes ...
Commandes Linux VoirTableau des principales commandes Linux Commande Description équivalent DOS ls liste le contenu d'un répertoire dir cd change de répertoire cd cd .. répertoire parent cd.. mkdir crée un nouveau...
Langage C - Les listes chaînées VoirLa notion de structure autoréferrentielle Une structure autoréferrentielle (parfois appelée structure récursive) correspond à une structure dont au moins un des champs contient un pointeur vers une structure de même type. De cette façon on crée...
Utilisation de la commande ftp VoirLe protocole FTP FTP (File Transfer Protocol) est un protocole, c'est-à-dire un langage standard de communication entre deux machines, permettant à des machines de types différents (ou dont le système d'exploitation est différent) de transférer des...

1

mamiemando, le 20 avr 2006 à 12:39:40

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

Répondre à mamiemando

2

 salim, le 8 nov 2007 à 12:11:43
  • +1

#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);
}

}

Répondre à salim