Affichage du chemin d'un fichier lors d'un listage recursif en C

Signaler
Messages postés
10
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
16 mai 2004
-
Messages postés
15
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
15 décembre 2005
-
voici ma procédure de parcours récursif,
je l'ai testé elle fonctionne (sauf pour les rep qui commencent par un "." mais ce n'est pas un problme pour lemoment)
Je voudrais cependant l'améliorer pour afficher
le chemin complet de chaque repertoire...
j'essais depuis ce matin mais je n'y arrive pas,
voici le code de la procedure :

 #include <stdio.h> 
 #include <malloc.h> 
 #include <string.h> 
 #include <dirent.h> 
 #include <sys/types.h> 
 #include <sys/stat.h> 
 #include  
 
 // REMPLACER STAT PAR LSTAT 
 // PROBLEME AVEC LES REPERTOIRES QUI COMMENCENT PAR "." 
 //-- Fonction recursive qui Affiche le contenu du repertoire --// 
 
 void parcoursRep(char *rep){ 
 
 
     DIR *dir;    //flux repertoire 
     struct dirent *entree;    //une entree du repertoire 
     struct stat infosEntree;    //structure contenant les informations d'une entree 
 
     if(strcmp(rep,"")==0){ 
       rep=(char*)malloc(sizeof(char)*2); 
       strcpy(rep,".\0"); 
     } 
 
     dir = opendir(rep);//ouverture du repertoire 
 
     chdir(rep); 
 
     if (dir == NULL){ 
       printf("%s",rep); 
       perror("opendir"); 
 
       exit(1); 
     } 
 
     while((entree=readdir(dir))!=NULL){ 
         if((strcmp(entree->d_name,".")!=0)&&(strcmp(entree->d_name,"..")!=0)){  //on traite pas . et .. 
             stat(entree->d_name,&infosEntree); //infos du fichier 
             if(S_ISDIR(infosEntree.st_mode)){ 
                 parcoursRep(entree->d_name); 
                 chdir(".."); 
             } 
 
             printf("%s\n",entree->d_name); 
         } 
     } 
     free (entree); 
     closedir(dir); 
 
 } 
 
 int main(int argc, char *argv[]){ 
    parcoursRep(""); 
 }


je suis desespéré, ca fait 5 jours que j'essai de faire
cette procédure, je pense qu'il suffit d'ajouter un deuxieme
parametre a la fonction ou l'on concatenerai a chaque fois le chemin
actuel mais je n'y arrive pas...

1 réponse

Messages postés
15
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
15 décembre 2005

Tu as pas moyen de t'en sortir avec un dir /s ? Il te renvoie directement l'arborescence.