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 :

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;
}
Voila le probleme :
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 :
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
 
Bureau
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
Si qqun perçoit où est l'erreur, qu'il lève la main bien haut s'il vous plait !
Merci !