IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Formatage ctime ?


Sujet :

C

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 12
    Par défaut Formatage ctime ?
    Bonjours ,

    je suis eleve a epitech, je suis entrain de recoder ls -l.
    J'ai un soucis sur l'affichage de l'heure :

    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
     
    int             ls()                                                                           
    {                                                                                              
      struct stat   *buf;                                                                          
      struct passwd *passwd;                                                                       
      struct group  *grp;                                                                          
      DIR           *dir;                                                                          
      struct dirent *dirent;                                                                       
      int           lecture;                                                                       
      char          *mtime;                                                                        
      struct tm     *timeinfo;                                                                     
     
      buf = malloc(sizeof (*buf));                                                                 
      dirent = malloc(sizeof (*dirent));                                                           
      dir = opendir(".");                                                                          
      while((dirent = readdir(dir)))                                                               
        {                                                                                          
          stat(dirent->d_name, buf);                                                               
          mtime = ctime(&(buf->st_mtime));                                                         
          printf("%s\n", mtime);                                                                   
        }                                                                                          
    }
    Le resultat me donne les heures sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Mon Nov 30 16:15:49 2009
    je voudrais le mettre sous cette forme :

    Merci de votre aide.

  2. #2
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 12
    Par défaut
    oui mais nan je pense pas avoir le droits d'utiliser strftime ...

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 116
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    En méthode un peu plus compliqué, c'est un sscanf ( pour lire la chaine de caractère et l'analyser ), ce qui permet de récupéré les différents champs. Puis un printf des différents champs récupéré, dans l'ordre voulu.

    Sinon ... encore pire je pense car ça peut amener des bugs ... directement faire la convertion du time_t.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Je recommanderais plutôt la solution suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct tm * timeinfo = localtime(&(buf->st_mtime));
    Ensuite formater les données contenues dans timeinfo avec printf. Inutile de passer par ctime. Pourrait t'intéresser : [Tutoriel] Dates et heures en C.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 12
    Par défaut
    Merci de ta reponse vais explorer cette idee je pense

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 12
    Par défaut
    Voila j'en suis la me manque quelques details :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct tm	*timeinfo;
     
    timeinfo = localtime(&(buf->st_mtime));
    printf("%d-%d-%d %d:%d\n",((timeinfo->tm_year - 100) + 2000),(timeinfo->tm_mon + 1), timeinfo->tm_mday, timeinfo->tm_hour, 
    timeinfo->tm_min);
    Sa m affiche sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    -rw-r--r-- 1 big-up big-up 682 trouvenom.c 2009-12-8 16:37
    -rw-r--r-- 1 big-up big-up 1021 test1.c 2009-11-30 16:44
    -rw-r--r-- 1 big-up big-up 2099 ls.c 2009-12-10 12:46
    -rwxr-xr-x 1 big-up big-up 10308 a.out 2009-12-10 12:46
    -rw-r--r-- 1 big-up big-up 1572 formels.c 2009-11-30 19:3
    -rw-r--r-- 1 big-up big-up 241 #ls.C# 2009-12-10 12:9
    -rw-r--r-- 1 big-up big-up 25 test.txt 2009-11-30 16:15
    en gros me manque juste a mettre les "0" devant les chiffres inferieur a 10 ... sans utiliser les option formatage de printf que j'ai pas recoder xD

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 12
    Par défaut
    Voila ma solution personnel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void            aff_time(struct stat buf)                                                                  
    {                                                                                                          
      struct tm     *timeinfo;                                                                                 
     
      timeinfo = localtime(&(buf.st_mtime));                                                                   
     printf("%d-",((timeinfo->tm_year - 100) + 2000));                                                         
      ((timeinfo->tm_mon < 10) ? printf("0%d-", (timeinfo->tm_mon + 1)) : printf("%d-", (timeinfo->tm_mon + 1)\
    ));                                                                                                        
      ((timeinfo->tm_mday < 10) ? printf("0%d ", timeinfo->tm_mday) : printf("%d ", timeinfo->tm_mday));       
     ((timeinfo->tm_hour < 10) ? printf("0%d:", timeinfo->tm_hour) : printf("%d:", timeinfo->tm_hour));        
    ((timeinfo->tm_min < 10) ? printf("0%d ", timeinfo->tm_min) : printf("%d ", timeinfo->tm_min));            
    }

  9. #9
    Membre confirmé Avatar de Gui13
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    printf("%d",    5); // affiche 5
    printf("%02d",  5); // affiche 05
    printf("%02d", 10); // affiche 10

  10. #10
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Citation Envoyé par BiG-Up Voir le message
    Voila ma solution personnel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void            aff_time(struct stat buf)                                                                  
    {                                                                                                          
      struct tm     *timeinfo;                                                                                 
     
      timeinfo = localtime(&(buf.st_mtime));                                                                   
     printf("%d-",((timeinfo->tm_year - 100) + 2000));                                                         
      ((timeinfo->tm_mon < 10) ? printf("0%d-", (timeinfo->tm_mon + 1)) : printf("%d-", (timeinfo->tm_mon + 1)\
    ));                                                                                                        
      ((timeinfo->tm_mday < 10) ? printf("0%d ", timeinfo->tm_mday) : printf("%d ", timeinfo->tm_mday));       
     ((timeinfo->tm_hour < 10) ? printf("0%d:", timeinfo->tm_hour) : printf("%d:", timeinfo->tm_hour));        
    ((timeinfo->tm_min < 10) ? printf("0%d ", timeinfo->tm_min) : printf("%d ", timeinfo->tm_min));            
    }
    [Tutoriel] Spécification de format dans printf

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Par défaut
    big-up c'est mal de demander de l'aide
    ceci dit, cela m'aide un peu ^^

    bonne chance pour ton my_ls

    (je suis tek1 lyonnais^^)

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 12
    Par défaut
    nan sa rien de mal personne ne m'a donner la solucion brut et ce bout de code aidera pas mal de monde je pense pour le my_ls xD

    EPITECH MONTPELLIER y'a que sa de vrai

    Ps : oui melem connaiser deja les formatage du printf mais dans mon my_printf il ne sont pas tous presents prefere faire sans xD

Discussions similaires

  1. Pb de formatage de champs de type float
    Par FrankyNormand dans le forum XMLRAD
    Réponses: 9
    Dernier message: 05/05/2005, 12h37
  2. formatage des requêtes sous psql
    Par Bouboubou dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 03/02/2004, 11h10
  3. problème de formatage à l'écran
    Par bidson dans le forum XMLRAD
    Réponses: 13
    Dernier message: 11/07/2003, 18h02
  4. [7RC3] Formatage de champs float
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 2
    Dernier message: 19/05/2003, 09h38
  5. pb formatage document XML généré par un dom tree
    Par lionel69 dans le forum APIs
    Réponses: 11
    Dernier message: 17/10/2002, 09h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo