Lister un repertoire en c++

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

2 réponses

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

    }
    5
    1. Modérateur
      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