Bonjour,
Dans une appli, j'ai besoin de parcourir des dossiers. J'ai donc suivi un tutoriel C++. J'ai cependant un problème : j'ai besoin de parcourir les sous-répertoires d'un répertoire père. J'ai donc fait une fonction itérative :
Donc cette fonction appelle isDir() qui renvoie vrai ou faux si c'est un dossier ou non (même critère que dans le tuto : s'il y a un point on considère que c'est un fichier avec une extension) :
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 void analyseDossier(DIR* rep, char* chemin) { struct dirent* fichierLu; while ((fichierLu = readdir(rep)) != NULL) { cout << "\nFichier lu : " << fichierLu->d_name << "\tPosition : " << telldir(rep) << endl; if (isDir(chemin)) { DIR* repEnfant; char* cheminEnfant = strcat(chemin, fichierLu->d_name); repEnfant = opendir(cheminEnfant); analyseDossier (repEnfant, cheminEnfant); } } }
Le problème, c'est qu'elle me renvoie toujours true et donc, quand l'appli revient dans analyseDossier(), elle essaye d'ouvrir un fichier comme un dossier (d'où une erreur segmentation fault).
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 bool isDir(char* chemin) { char* test = NULL; test = strchr(chemin,'.'); if (test == NULL) { cout << "\nC'est un dossier." << endl; return true; } else { cout << test << endl; cout << "\n c'est un fichier." << endl; return false; } }
Merci d'avance pour votre aide![]()
Partager