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