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 :

probleme avec difftime


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de semaj_james
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 193
    Par défaut probleme avec difftime
    Bonjour,

    J'ai une erreur de segmentation lorsque j'execute ce code:

    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
    44
    45
    46
    47
    48
    49
    50
    51
    int calcul_age(struct cache struct_cache)
    {
    time_t now;
    struct tm tmdate_value,*tmdate_now;
    double corrected_received_age;
     
    printf("debut calcul_age:\n");
    if(!formatage_heure(struct_cache,"Date",&tmdate_value))
       return 0;
     
    time(&now); // date et heure actuel
     
    // convertit la  date  now  en  une  représentation struct  tm  exprimée en Temps Universel (GMT)
    if(gmtime_r (&now,tmdate_now) == NULL)
       perror("gmtime_r");
     
    printf("date now GMT:\n");
     
       /* Affiche la date et l'heure courante (format français) */
      printf ("Nous sommes %s, ", NomJourSemaine[tmdate_now -> tm_wday]);
       printf ("le %02u %s %04u, ", tmdate_now -> tm_mday, NomMois[tmdate_now -> tm_mon], 1900 +tmdate_now -> tm_year);
       printf ("et il est %02uh %02umin %02usec.\n", tmdate_now -> tm_hour, tmdate_now -> tm_min, tmdate_now -> tm_sec);
       printf ("\n");
     
       /* Affiche la date et l'heure courante (format français) */
        printf("date cache:\n");
      printf ("le %02u %s %04u, ", tmdate_value.tm_mday, NomMois[tmdate_value.tm_mon], 1900 +tmdate_value.tm_year);
       printf ("et il est %02uh %02umin %02usec.\n", tmdate_value.tm_hour, tmdate_value.tm_min,tmdate_value.tm_sec);
       printf ("\n");
     
     
     
    corrected_received_age=mktime(&tmdate_value);
    printf("%.0f\n",corrected_received_age);
     
    corrected_received_age=mktime(tmdate_now);
    printf("%.0f\n",corrected_received_age);
     
     
     
    corrected_received_age=difftime(mktime(tmdate_now),mktime(&tmdate_value));
    printf("%.0f\n",corrected_received_age);
     
     
    //printf("La difference est : %.0f\n\n",difftime (mktime(tmdate_now), mktime(&tmdate_value)));
     
    //  time_t mktime (struct tm *tm);
     
    //difftime (today, mktime (&date_cache))
    //double difftime (time_t time1, time_t time0);
    }
    mktime(&tmdate_value) et mktime(tmdate_now) fonctionnent tres bien, lorsque je mets les commentaires sur corrected_received_age=difftime(mktime(tmdate_now),mktime(&tmdate_value)); J'ai ceci:

    debut calcul_age:
    date now GMT:
    Nous sommes Mercredi, le 27 Decembre 2006, et il est 14h 11min 08sec.

    date cache:
    le 27 Decembre 2006, et il est 10h 48min 00sec.

    1167212880
    1167225068
    le probleme c'est corrected_received_age=difftime(mktime(tmdate_now),mktime(&tmdate_value)); Lorsque j'enleve les commentaires j'ai ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    debut calcul_age:
    Erreur de segmentation
    Je ne comprend pas ce qui ne va pas. Surtout que ca marchait tres bien jusqu'a ce que je renomme tmdate_value et tmdate_now. au depart ils s'appelaient date_value et date_now et difftime fontionnait bien. j'ai juste renommé et depuis cela ne marche plus meme si je les renomment comme avant. Qu'est ce qui ne va pas ?

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par semaj_james
    J'ai une erreur de segmentation lorsque j'execute ce code:
    Ce code est incomplet. On ne peut pas le tester.

  3. #3
    Membre confirmé Avatar de semaj_james
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 193
    Par défaut
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    int calcul_age(void)
    {
    time_t now;
    struct tm tmdate_value,*tmdate_now;
    double corrected_received_age;
     
    printf("debut calcul_age:\n");
    /*if(!formatage_heure(struct_cache,"Date",&tmdate_value))
       return 0;
     
    */
     
       tmdate_value.tm_mon = 11;    /* mois */
       tmdate_value.tm_mday = 12;   /*  jour */
       tmdate_value.tm_hour = 10;   /* heure */
       tmdate_value.tm_min = 12;   /* minute */
       tmdate_value.tm_sec = 15;   /* seconde */
       tmdate_value.tm_year = 2000-1900;   /* annee 2000= 1900 + 100 annees  */
     
    time(&now); // date et heure actuel
     
    // convertit la  date  now  en  une  représentation struct  tm  exprimée en Temps Universel (GMT)
    if(gmtime_r (&now,tmdate_now) == NULL)
       perror("gmtime_r");
     
    printf("date now GMT:\n");
     
       /* Affiche la date et l'heure courante (format français) */
      printf ("Nous sommes %s, ", NomJourSemaine[tmdate_now -> tm_wday]);
       printf ("le %02u %s %04u, ", tmdate_now -> tm_mday, NomMois[tmdate_now -> tm_mon], 1900 +tmdate_now -> tm_year);
       printf ("et il est %02uh %02umin %02usec.\n", tmdate_now -> tm_hour, tmdate_now -> tm_min, tmdate_now -> tm_sec);
       printf ("\n");
     
       /* Affiche la date et l'heure courante (format français) */
        printf("date cache:\n");
      printf ("le %02u %s %04u, ", tmdate_value.tm_mday, NomMois[tmdate_value.tm_mon], 1900 +tmdate_value.tm_year);
       printf ("et il est %02uh %02umin %02usec.\n", tmdate_value.tm_hour, tmdate_value.tm_min,tmdate_value.tm_sec);
       printf ("\n");
     
     
    corrected_received_age=mktime(&tmdate_value);
    printf("%.0f\n",corrected_received_age);
     
    corrected_received_age=mktime(tmdate_now);
    printf("%.0f\n",corrected_received_age);
     
    //corrected_received_age=difftime(mktime(tmdate_now),mktime(&tmdate_value));
    //printf("%.0f\n",corrected_received_age);
     
    //printf("La difference est : %.0f\n\n",difftime (mktime(tmdate_now), mktime(&tmdate_value)));
     
    //  time_t mktime (struct tm *tm);
     
    //difftime (today, mktime (&date_cache))
    //double difftime (time_t time1, time_t time0);

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par semaj_james
    Pas mieux...
    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
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums2\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c: In function `calcul_age':
    main.c:3: error: `time_t' undeclared (first use in this function)
    main.c:3: error: (Each undeclared identifier is reported only once
    main.c:3: error: for each function it appears in.)
    main.c:3: error: syntax error before "now"
    main.c:4: error: storage size of 'tmdate_value' isn't known
    main.c:6: warning: implicit declaration of function `printf'
    main.c:13: warning: implicit declaration of function `time'
    main.c:13: error: `now' undeclared (first use in this function)
    main.c:15: warning: implicit declaration of function `gmtime_r'
    main.c:15: error: `NULL' undeclared (first use in this function)
    main.c:16: warning: implicit declaration of function `perror'
    main.c:18: error: `NomJourSemaine' undeclared (first use in this function)
    main.c:18: error: dereferencing pointer to incomplete type
    main.c:19: error: dereferencing pointer to incomplete type
    main.c:20: error: `NomMois' undeclared (first use in this function)
    main.c:20: error: dereferencing pointer to incomplete type
    main.c:20: error: dereferencing pointer to incomplete type
    main.c:21: error: dereferencing pointer to incomplete type
    main.c:22: error: dereferencing pointer to incomplete type
    main.c:22: error: dereferencing pointer to incomplete type
    main.c:30: warning: implicit declaration of function `mktime'
    main.c:4: warning: unused variable `tmdate_value'
    Process terminated with status 1 (0 minutes, 1 seconds)
    16 errors, 6 warnings

  5. #5
    Membre confirmé Avatar de semaj_james
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 193
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <time.h>
     
    const char *NomJourSemaine[] =
    {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};
     
    const char *NomMois[] =
    {"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout",
    "Septembre", "Octobre", "Novembre", "Decembre"};
     
    const char *NomMoisEn[] =
    {"Jan" , "Feb" , "Mar" , "Apr", "May" , "Jun" , "Jul" , "Aug", "Sep" , "Oct" , "Nov" , "Dec"};

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par semaj_james
    Je n'ai pas de gmtime_r() (pas standard C).
    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
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums2\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c: In function `calcul_age':
    main.c:28: warning: implicit declaration of function `gmtime_r'
    main.c:28: warning: comparison between pointer and integer
    main.c:53: warning: control reaches end of non-void function
    main.c:17: warning: 'tmdate_now' might be used uninitialized in this function
    Linking console executable: C:\dev\forums2\console.exe
    .objs\dev\forums2\main.o: In function `calcul_age':
    C:/dev/forums2/main.c:28: undefined reference to `gmtime_r'
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 4 seconds)
    1 errors, 4 warnings

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

Discussions similaires

  1. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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