Bonsoir,
Je suis entrain de faire un petit programme C qui permet de liste le contenu d'un répertoire.
Je souhaite parcourir le-dit répertoire, et stocker les informations dans une structure qui va bien, puis parcourir cette structure pour afficher les informations.
J'ai donc une structure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 typedef struct liste_fichier { struct dirent* fichier; struct liste_fichier* suivant; }sFichier;
La fonction qui remplis ma structure avec les informations est la suivante :
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 sFichier* parcourir(char* repertoire) { DIR *rep; if((rep = opendir(repertoire))==NULL) { fprintf(stderr,"Impossible d'ouvrir le dossier %s\n",repertoire); exit(2); } sFichier* listeFichier = NULL; sFichier* nouveau, *courant; struct dirent *lecture; struct stat st; while ((lecture = readdir (rep))) { stat (lecture->d_name, &st); time_t t = st.st_mtime; struct tm tm = *localtime (&t); char s[32]; strftime (s, sizeof s, "%d/%m/%Y %H:%M:%S", &tm); fprintf(stdout,"%-14s %s\n", lecture->d_name, s); if(listeFichier==NULL) { nouveau=(sFichier*) malloc (sizeof(sFichier)); nouveau->fichier = lecture; listeFichier=nouveau; courant=listeFichier; } else { nouveau=(sFichier*) malloc (sizeof(sFichier)); nouveau->fichier = lecture; courant->suivant=nouveau; courant=courant->suivant; } } courant->suivant=NULL; closedir(rep); rep = NULL; return listeFichier; }
Et enfin, la fonction d'affichage du contenu est la suivante :
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 affichage(sFichier* listeFichier) { sFichier* courant = listeFichier; struct stat st; while(courant!=NULL) { stat (courant->fichier->d_name, &st); time_t t = st.st_mtime; struct tm tm = *localtime (&t); char s[32]; strftime (s, sizeof s, "%d/%m/%Y %H:%M:%S", &tm); fprintf(stdout,"%-14s %s\n", courant->fichier->d_name, s); courant=courant->suivant; } }
Mon problème est le suivant : les deux lignes en rouge n'affichent pas la même chose, et je ne comprend pas pourquoi...
J'ai loupé quelque chose ? (ou devrais-je dire, qu'ais-je loupé, puisque j'ai assuremment loupé quelque chose...)
D'avance merci à ceux qui pourront m'aider![]()
Partager