Salut !

j'essaye de lister tous les fichiers d'un repertoire et de ces sous-repertoire

j'imagine que ce sujet a dù etre traiter plusieurs fois dans ce forum
et je m'en excuse, j'ai pas trouver, ce topic si il existe

j'ai piquer du code ici et là nottament dans la FAQ C, ca liste trés bien
un répertoire mais pour les sous-répertoire ca marche pas
nottament quand j'essaye de faire un appel récursif

je travail avec Dev-C++ sous Windows xp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream> 
#include <windows.h>
 
using namespace std;
 
bool lister(char* pszMask) 
{
     WIN32_FIND_DATA File;
     HANDLE hSearch;
     BOOL bFindNextFile;  //vrai si il ya un fichier ou un repertoire suivant
 
     hSearch = FindFirstFile(pszMask, &File);
     if(hSearch == INVALID_HANDLE_VALUE){
         return FALSE;
     }
 
     // Partie qui retourne le répertoire courant dans BufCurDir
     TCHAR BufCurDir[MAX_PATH];
     DWORD dwRet;
     dwRet = GetCurrentDirectory(MAX_PATH, BufCurDir);
     //------
 
     bFindNextFile = TRUE;
     do {
 
        if (File.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
           {
           // Traite les Repertoires
           if(File.cFileName[0] != '.') // ne traite pas "." et ".."
             {
              SetCurrentDirectory(File.cFileName);
              lister(pszMask);           //<--------------- je me plante ici
              //cout << BufCurDir << '\\' << File.cFileName << endl;
             }
           }
        else
           {
           // Traite les Fichiers
           cout << BufCurDir << '\\' << File.cFileName << endl; 
           }
 
        bFindNextFile = FindNextFile(hSearch, &File);
     } while(bFindNextFile); //tantqu'il existe un fichier ou répertoire suivant 
 
     FindClose(hSearch);
     return TRUE;
}
 
int main(int argc, char *argv[])
{
    lister("*");
    system("PAUSE"); 
    return EXIT_SUCCESS;
}
Voila si quelqu'un pouvais m'aider comme d'hab ce serai super sympa