problème de parcours

problème de parcours - C++ - Programmation

Marsh Posté le 14-03-2006 à 18:28:15    

Bonjour g un petit sous je souhaite parcourir tous les sous dossiers et fichiers à partir d'une racine. Pb mon prog reviens au dossier précédant et je ne comprend pas pourquoi. Il semblerait que ce soit "FindNextFile (hFind, &FindData)" qui me cause problème mais je ne trouve pas de solutions.  I need help pleaz !!
 
voila mon code

Code :
  1. #include <windows.h>
  2. #include <stdio.h>
  3. void AfficherListeFichiers (char Dossier[MAX_PATH]);
  4. int main(void)
  5. {
  6. char Dossier[MAX_PATH]="C:\\test";
  7. int a;
  8. AfficherListeFichiers (Dossier);
  9. scanf("%d",&a);
  10. return EXIT_SUCCESS;
  11. }
  12. void AfficherListeFichiers (char Dossier[MAX_PATH])
  13. {
  14. HANDLE hFind;
  15. WIN32_FIND_DATA FindData;
  16. // Change de dossier  
  17. SetCurrentDirectory (Dossier);
  18. // Début de la recherche  
  19. hFind=FindFirstFile ("*.*", &FindData);
  20. if (hFind!=INVALID_HANDLE_VALUE)
  21. {
  22. printf("%s\n",FindData.cFileName);
  23.      // Fichiers suivants  
  24.      while (FindNextFile (hFind, &FindData))
  25.       {
  26.         printf("%s\n",FindData.cFileName);
  27.        
  28.         if ((FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
  29.            {
  30.        Dossier=FindData.cFileName;
  31.        printf("%s\n",FindData.cFileName);
  32.            // Change de dossier  
  33.            SetCurrentDirectory (Dossier);
  34.            // Début de la recherche  
  35.             hFind=FindFirstFile ("*.*", &FindData);
  36.              if (hFind!=INVALID_HANDLE_VALUE)
  37.                 {
  38.                 printf("%s\n",FindData.cFileName);
  39.                 // Fichiers suivants  
  40.                 while (FindNextFile (hFind, &FindData))
  41.                       {
  42.                        printf("%s\n",FindData.cFileName);
  43.                       }
  44.                 }
  45.             }
  46.     }
  47. }
  48. // Fin de la recherche  
  49. FindClose (hFind);
  50. }


 
merci

Reply

Marsh Posté le 14-03-2006 à 18:28:15   

Reply

Marsh Posté le 14-03-2006 à 18:59:38    

Pourquoi ne fais-tu pas une fonction récursive ??

Reply

Marsh Posté le 14-03-2006 à 19:01:13    

salut,

Citation :


hFind=FindFirstFile ("*.*", &FindData);  


As tu beaucoup de repertoire qui ont un "point" (*.*) dans leur nom?

Reply

Marsh Posté le 14-03-2006 à 21:47:31    

oui le but étant de recupèrer tous les .txt dans tous les sous fichiers

Reply

Marsh Posté le 14-03-2006 à 22:11:55    

En général on saute les répertoires particuliers "." et ".." qui ont une signification particulière.

Reply

Marsh Posté le 14-03-2006 à 22:27:07    

ok mais comment fais tu pour les éviter ??

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed