Bonjour à tous,
J'ai un probleme concernant un programme devant lister de facon récursive les fichiers et sous-répertoire d'un nom de fichier passer en argument.
voici la méthode de listage simple d'un répertoire suivi de celle de lisatge récursif :
Voila le probleme :
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
55
56 /* --------------- SIMPLE ---------------------*/ void ls_dir(char*nameDir){ DIR*dir=opendir(nameDir); struct dirent* d; if(dir){ while( (d=readdir(dir)) ){ printf("%s\n",d->d_name); } closedir(dir); } } /* ------------------------LISTAGE RECURSIF -------------------*/ void ls_rec(char* nameDir){ DIR*dir; struct dirent* d; struct stat st; dir=opendir(nameDir); if( dir != NULL){ ls_dir(nameDir); while( (d=readdir(dir)) ){ stat(d->d_name,&st); if( S_ISDIR(st.st_mode) && (*d->d_name)!='.'){ //Ici PB : tous les fichiers sont vu comme des repertoires !! printf(" rentre --> %s\n",d->d_name); ls_rec(d->d_name); } else continue; } closedir(dir); } } /* -----------------------MAIN ---------------------------*/ int main(int argc,char**argv){ ls_rec("/home/user"); struct stat st; stat("/home/user/enonceprojet.pdf",&st); printf("%d\n",S_ISDIR(st.st_mode)); // Alors qu'ici enonceprojet est bien vu comme un fichier.... return 0; }
a l'interieur de la fonction, tous les fichiers paraissent etre considérés comme des repertoires !
Deplus , l'appel recursif n'est jamais déclenché càd le contenu des sous-répertoires n'est pas afficher !
Voici le résultat :
Si qqun perçoit où est l'erreur, qu'il lève la main bien haut s'il vous plait !
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
25Bureau workspace Caml enonceprojet.pdf test.c~ Lapins text~ Java Documents Projets C test~ Firefox_wallpaper.png rentre --> enonceprojet.pdf rentre --> test.c~ rentre --> Lapins rentre --> text~ rentre --> Java rentre --> Documents rentre --> Projets rentre --> C rentre --> test~ rentre --> Firefox_wallpaper.png 0
Merci !
Partager