Date de création fichier + C

Utilisateur anonyme - 10 mars 2010 à 19:32
tpoinsot Messages postés 345 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 octobre 2014 - 11 mars 2010 à 10:18
Bonjour! :)

J'ai un pti'probleme trés simple mais qui me prend la tete royalement...

Donc j'ai un repertoire contenant que des fichiers... et je veut lister ces fichier du plus vieux aux plus récents grace à leur date de création.
le programme ne doit pas utiliser des commandes systemes windobe ni linu(l)x :-)
Ex system("dir ......") <- NO !

Bien sur j'ai cherché sur google qui n'est pas du tout mon amis !

#include <stdio.h> 
#include <sys/types.h> 
#include <dirent.h> 
#include <sys/stat.h> 
#include <time.h> 
 
int main (void) 
{ 
   DIR *rep = opendir ("." ); 
 
   if (rep != NULL) 
   { 
      struct dirent *lecture; 
 
      while ((lecture = readdir (rep))) 
      { 
         struct stat st; 
 
         stat (lecture->d_name, &st); 
         { 
            /* Modified time */ 
            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); 
 
            printf ("%-14s %s\n", lecture->d_name, s); 
         } 
      } 
      closedir (rep), rep = NULL; 
   } 
   return 0; 
} 




Ce code ne fonctionne pas car il m'affiche bien le nom de mes fichiers mais pour leurs date de création, ça m'affiche : 01/01/1980 ??????!!!!???


Donc j'ai besoin de votre aide car j'ai cherché tout cette aprem <- Oui mdr je sui débutant en C ...


Merci bien ;)

1 réponse

tpoinsot Messages postés 345 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 octobre 2014 4
11 mars 2010 à 10:18
Bonjour,

Il faut écrire :

            /* Modified time */ 
            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); 
 


ou plus concis :
            /* Modified time */ 
            char s[32]; 
            strftime (s, sizeof(s), "%d/%m/%Y %H:%M:%S", localtime(&st.st_mtime)); 
 
0