Affichage du chemin d'un fichier lors d'un listage recursif en C
zegota
Messages postés10Date d'inscriptionsamedi 15 mai 2004StatutMembreDernière intervention16 mai 2004
-
16 mai 2004 à 14:16
ensiame
Messages postés15Date d'inscriptionmercredi 10 mars 2004StatutMembreDernière intervention15 décembre 2005
-
16 mai 2004 à 23:17
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...
A voir également:
Affichage du chemin d'un fichier lors d'un listage recursif en C