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 :

fonction de gestion du temps


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2002
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1
    Points : 2
    Points
    2
    Par défaut fonction de gestion du temps
    bonjour;
    je veux avoir les fonctions qui me permettre de savoir l'heure systeme, c'est à dire ( heure, minute) à un moment donné

  2. #2
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    voila pour UNix :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     time_t        clock;
      char          *buf;
      int           i;
     
      clock = time(NULL);
      buf = ctime(&clock);
    dans buf il y a toutes les info que tu veux . affiche le et recupere ce que tu veux

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2002
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 29
    Points : 36
    Points
    36
    Par défaut
    et pour la version Windows :

    tu as la solution un peux chiante ou il faut malloquer une structure :

    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
    #include <stdlib.h>
    #include <time.h>
    #include <stdio.h>
     
    int    main(int ac, char **av)
    {
        time_t       now;
        struct tm    *when;
     
        time(&now);
        when = malloc(sizeof(struct tm));
        when = localtime(&now);
     
        printf("when->tm_hour : %d\n", when->tm_hour);
     
        return (0);
    }
    mais il y a une alternative qui te permet de ne pas malloquer

    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
    #include <time.h>
    #include <stdio.h>
     
    int    main(int ac, char **av)
    {
        time_t       now;
        struct tm    when;
     
        time(&now);
        when = *localtime(&now);
     
        printf("when.tm_hour : %d\n", when.tm_hour);
     
        return (0);
    }
    voila, tm_hour est un exemple... je ne sais pas quel compilo tu utilise, mais avec Visual C++ quand tu fait when. il t'affiche une liste avec tout ce que contient la structure et donc ce que tu peux utiliser, c'est tres complet

    pour l'annee, si tu voit un truc bizarre, genre 102, c'est normal... c'est le nombre d'annee ecouler depuis l'an 1900 donc pour avoir la vrai annee : when.tm_year + 1900 ceci donne bien 2002 (arf, bientot 103 )

    si jamais au pire des cas tu utilise un IDE qui ne te donne pas la liste du contenu de la structure, tu peux toujours le demander ici ou aller voir sur MSDN Online

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Hum...

    Fatalis, il y a un probleme dans ton premier code !
    localtime() retourne un pointeur.
    Lorsque tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    when = malloc(sizeof(struct tm));
    when = localtime(&now);
    Tu mets dans ton pointeur when l'adresse d'un espace alloué avec malloc(),
    puis juste après tu mets dedans le retour de la fonction localtime().

    Résultat: tu perds l'adresse de la zone alloué.
    Tu ne peux plus la désallouer...

    En gros tu dois faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        time_t       now;
        struct tm    *when;
     
        time(&now);
        when = localtime (&now);
     
        printf("when.tm_hour : %d\n", when->tm_hour);
    Au passage tu peux egalement faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    when = localtime ( time(NULL) );
    Quand à la structure tm c'est ca:
    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
     
         struct  tm {
                 int     tm_sec;   /* seconds after the minute -- [0, 61]  */
                                   /* 60 and 61 for leap seconds          */
                 int     tm_min;   /* minutes after the hour -- [0, 59]    */
                 int     tm_hour;  /* hour since midnight -- [0, 23]       */
                 int     tm_mday;  /* day of the month -- [1, 31]          */
                 int     tm_mon;   /* months since January -- [0, 11]      */
                 int     tm_year;  /* years since 1900                    */
                 int     tm_wday;  /* days since Sunday -- [0, 6]          */
                 int     tm_yday;  /* days since January 1 -- [0, 365]     */
                 int     tm_isdst; /* flag for daylight savings time      */
                 long    tm_tzadj; /* seconds from UTC (east < 0)         */
                 char    tm_name[LTZNMAX];  /* name of timezone           */
         };
    a++

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2002
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 29
    Points : 36
    Points
    36
    Par défaut
    bon bah voila, la honte sur ma gueule, je sais meme pas pourquoi j'ai fait un malloc trop trop inutile, de plus, etant alergique au fuite de memoire, la je viens de prendre un vieux coup dans la tronche

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    C'est pas grâve ca arrive à tout le monde...

    Mais bon la honte planera sur toi toute ta vie

    bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonctions de gestion de fichiers
    Par sebduth dans le forum Fortran
    Réponses: 4
    Dernier message: 22/08/2005, 10h38
  2. [MFC] Gestion du temps
    Par Kevgeii dans le forum MFC
    Réponses: 7
    Dernier message: 02/07/2005, 14h21
  3. Aide pour l'analyse d'un problème de gestion de temps
    Par PAINCO dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 03/06/2005, 15h49
  4. [VB.NET] Gestion en temps réel d'une bdd access
    Par qwiskas dans le forum Windows Forms
    Réponses: 6
    Dernier message: 12/02/2005, 19h37
  5. Fonction qui dure le temps de dialog ?
    Par CORREGE Frédéric dans le forum MFC
    Réponses: 6
    Dernier message: 21/02/2004, 16h39

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