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 :

[C][Newbie] Besoin d'aide pour un problème tout bête !


Sujet :

C

  1. #1
    Membre averti Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Points : 301
    Points
    301
    Par défaut [C][Newbie] Besoin d'aide pour un problème tout bête !
    Bonjour a tous !
    J'ai un problème qui me parait bien obscur . . . Je m'explique, voici le 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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    #include <time.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main()
    {
     
     /* int choix = 10; */
      time_t date;
      struct tm *timet;
      char *stringdate;
      char buffer[20];
      char bufferAnniv[4];
      char bufferNom[20];
      int i = 4;
      int c;
      FILE *fp;
     
      while ((c = getchar()) != '\n' && c != EOF); /* mange le tampon */
     
      /* Ouverture du fichier en lecture et écriture */
     
      fp = fopen ("anniversaire.txt", "rw");
     
      printf("DEBUG \n");
     
      if (fp == NULL)
        {
          perror("Fichier inexistant ! \n");
          return EXIT_FAILURE;
        }
     
      printf("DEBUG \n");
     
      stringdate = malloc (sizeof(char) * 10);
     
      if (stringdate == NULL)
        {
          perror("Erreur allocation memoire chaine de caracteres ! \n");
          return EXIT_FAILURE;
        }
     
      timet = malloc(sizeof(struct tm));
     
      if (timet == NULL)
        {
          perror("Erreur allocation memoire structure time ! \n");
          return EXIT_FAILURE;
        }
     
      /* Récupération de la date courante et on la formate comme ceci : jjmm */
     
      time(&date);
     
      timet = gmtime(&date);
     
      strftime (stringdate, 10, "%d%m", timet);
     
     
      printf(" --| Nous sommes le %s", stringdate);
     
      /* Parcours du fichier */
      /* dans bufferAnniv on recopie la date de l'entrée dans le fichier */
      /* dans bufferNom on recopie le nom qui correspond a la date */
      /* Si la date courante correspond a la date de l'entrée dans le fichier on affiche le nom de la personne */
     
      while( fgets( buffer, sizeof(buffer), fp)!=NULL )
        {
         bufferAnniv[0] = buffer[0];
         bufferAnniv[1] = buffer[1];
         bufferAnniv[2] = buffer[2];
         bufferAnniv[3] = buffer[3];
     
         while(buffer[i] != '\n')
           {
    	 bufferNom[i - 4] = buffer[i];
    	 i++;
           }
     
         if (strncmp(bufferAnniv, stringdate, 4) == 0)
           {
     
    	 printf(" --| C'est l'anniversaire de  %s ! \n", bufferNom);
     
           }
       }
     
      return EXIT_SUCCESS;
    }
    Voila, donc je rencontre un problème a l'exécution, il faut que je tape sur une touche du clavier puis sur entrée pour que l'exécution du programme démarre,
    tant que je n'ai pas fait ça, même le 1er printf("DEBUG \n") ne s'affiche pas !
    J'ai essayé de rajouter cette ligne trouvée sur la faq :
    while ((c = getchar()) != '\n' && c != EOF); /* mange le tampon */
    Mais ça n'a rien changé, sauriez d'ou peut venir mon problème ?

    Merci d'avance !!!
    define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2005
    Messages : 88
    Points : 107
    Points
    107
    Par défaut
    Eassaye un fflush(stdout), apres le printf

  3. #3
    Membre averti Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Points : 301
    Points
    301
    Par défaut
    Merci pour ta réponse !

    Avec un fflush(stdout) aprés le 1er printf("Debug") ben il faut toujours que j'appuie sur une touche puis sur entrée, mais au lieu de dérouler tout le programme, le programme se bloque au 2e print("Debug") et je dois de nouveau appuyer sur une touche puis sur entrée . . . bizarre non?
    define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

  4. #4
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Ton getchar est complètement inutile ici. Lors de l'exécution du getchar(), la machine rencontre un tampon déjà vide, et attend naturellement que quelqu'un vienne y écrire quelque chose.

    Je continue de penser que l'on enseigne trop de conneries en C.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par frenchi
    Eassaye un fflush(stdout), apres le printf
    Quel rapport avec stdin ? Tu balances des trucs au hasard, comme ça, juste pour voir ?
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Membre averti Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Points : 301
    Points
    301
    Par défaut
    Ah ben le getchar je l'ai mis en désespoir de cause !
    Au départ il y était pas, je l'ai mis "par hasard" pour voir si ça solutionnait le problème . . .
    define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par GyZmoO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      while ((c = getchar()) != '\n' && c != EOF); /* mange le tampon */
    Totalement inutile au démarrage (mais ça peit servir après une saisie). Il faut cesser de programmer au hasard...

    Je conseille de faire toutes les saisies sur le modèle :

    fgets(...)
    clean(...)

    afin d'avoir du code parfaitement stable.

    Le code de clean() a été publié plusieurs fois récemment.
    Pas de Wi-Fi à la maison : CPL

  8. #8
    Membre averti Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Points : 301
    Points
    301
    Par défaut
    Ma foi je suis d'accord, seulement dans mon programme y'a pas une seule saisie et ça m**** qd même !
    define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par GyZmoO
    Ma foi je suis d'accord, seulement dans mon programme y'a pas une seule saisie et ça m**** qd même !
    C'est à dire ?

    Si il n'y a pas de saisie, tu en as encore moins besoin...

    Faut dire que ton code, il est un peu space...

    -> C'est quoi une ouverture de fichier en "rw" ?
    -> Pas de fermeture de fichier
    -> pas de libération de la mémoire... C'est quoi ce pointeur affecté 2 fois de suite ? J'ai peur !
    Pas de Wi-Fi à la maison : CPL

  10. #10
    Membre averti Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Points : 301
    Points
    301
    Par défaut
    Tu le trouves space ?? Pourtant je me suis appliqué
    Non sans rire ben, je lance le prog et rien ne se passe sauf si je tape sur une touche du clavier et que j'appuie sur entrée !!!!! (et normalement le prog n'attend pas de saisie...)

    Ps : le rw ça correspond pas a read et write ???

    Merci.

    [Edit] Un pointeur affecté deux fois de suite ?! Lequel ? je vois pas
    define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par GyZmoO
    Non sans rire ben, je lance le prog et rien ne se passe sauf si je tape sur une touche du clavier et que j'appuie sur entrée !!!!! (et normalement le prog n'attend pas de saisie...)
    Evidemment. On se tue à te dire que la boucle avec getchar() ne sert à rien. Qu'est-ce que tu attends pour la virer ?
    Ps : le rw ça correspond pas a read et write ???
    Ben non. Je t'ai demander de cesser de programmer au hasard. Lit la doc ! C'est "r+" ou "w+", mais je ne pense pas que tu ais besoin de ça. C'est difficile à utiliser, surtout sur un fichier texte... Commence par "r", et en cas d'échec, par exemple, tu fermes et tu rouvres en "w" pour pouvoir écrire dedans si ça a un sens... A la fin, tu fermes.
    Pas de Wi-Fi à la maison : CPL

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par GyZmoO
    [Edit] Un pointeur affecté deux fois de suite ?! Lequel ? je vois pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
          timet = malloc (sizeof (struct tm));
     
          if (timet != NULL)
          {
             <...>
             timet = gmtime (&date);
    J'ai pas compris pourquoi tu utilises une allocation;
    Pas de Wi-Fi à la maison : CPL

  13. #13
    Membre averti Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Points : 301
    Points
    301
    Par défaut
    Ok j'ai fait ça mais ça n'a pas marché !

    Alors j'ai supprimé le fichier .txt et j'en ai créé un nouveau et la ça remarche, ça peut venir de quoi????

    En tout cas merci pour votre aide !

    [Edit] Alors dés que j'écris un truc dans le fichier ben le prog plante, si je supprime le fichier et que j'en créé un nouveau avec rien dedans ça marche, je désespère . . . [/Edit]
    define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par GyZmoO
    Ok j'ai fait ça mais ça n'a pas marché !
    C'est à dire ? On est pas devins...
    Alors j'ai supprimé le fichier .txt et j'en ai créé un nouveau et la ça remarche, ça peut venir de quoi????

    En tout cas merci pour votre aide !

    [Edit] Alors dés que j'écris un truc dans le fichier ben le prog plante, si je supprime le fichier et que j'en créé un nouveau avec rien dedans ça marche, je désespère . . . [/Edit]
    Dans quel mode ouvres tu le fichier ?
    Pas de Wi-Fi à la maison : CPL

  15. #15
    Membre averti Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Points : 301
    Points
    301
    Par défaut
    Alors quand je dis ça marche pas, ben c'est que le programme se termine sans rien faire (même pas un affichage rien) je tape le nom de l'exécutable et il se termine sans rien faire .
    Ensuite je pensais qu'il fallait allouer le pointeur avant de faire appel a gmtime .
    Et j'ouvre le fichier en mode "r+" .
    define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par GyZmoO
    Alors quand je dis ça marche pas, ben c'est que le programme se termine sans rien faire (même pas un affichage rien) je tape le nom de l'exécutable et il se termine sans rien faire .
    Ensuite je pensais qu'il fallait allouer le pointeur avant de faire appel a gmtime .
    'allouer un pointer' n'a aucun sens. Tu veux dire allouer un bloc et stocker son adresse dans un pointeur.

    Pour utiliser gmtime(), c'est inutile. Il faut par contre définir un objet de type struct tm et recopier les données dont l'adresse est retournée par gmtime(), car c'est une variable statique qui sera modifiée au prochain appel de gmtime(). Stocker son adresse n'a donc aucun intérêt. Je recommande ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          time_t date = time (NULL);
          struct tm timet = *gmtime (&date);
    Et j'ouvre le fichier en mode "r+" .
    Et pourquoi pas en mode "r" tout simplement ?

    Il y a quelque chose dans ton fichier ? Tu as spécifié le format des données du fichier ? Tu peux donner un exemple de fichier ?
    Pas de Wi-Fi à la maison : CPL

  17. #17
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Mort de rire !

    AhAhAhAhAh !

    Trop marrant !

    Bon allez, je sais que ce n'est pas facile. Ce n'est pas pour me moquer que je dis ça, n'allez pas croire.

    Ne nomme pas ton programme "test"... car "test" est déjà une commande qui, sans arguments, ne fait pas grand chose.

    Si c'est déjà fait, tu peux lancer ton programme en faisant "./test"... mais le mieux est de renommer l'exécutable !
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  18. #18
    Membre averti Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Points : 301
    Points
    301
    Par défaut
    Test ? Mon exécutable ne s'apelle pas test . . .
    Enfin bref, le fichier se présente sous cette forme :
    jjmm nom1
    jjmm nom2
    jjmm nom3
    Etc . . .

    [Edit]
    'allouer un pointer' n'a aucun sens
    Je me suis mal exprimé
    define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par GyZmoO
    Enfin bref, le fichier se présente sous cette forme :
    ALors lecture ligne par ligne avec fgets(), puis séparation des données avec sscanf() et "%s %s". Le reste est correct.
    Pas de Wi-Fi à la maison : CPL

  20. #20
    Membre averti Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Points : 301
    Points
    301
    Par défaut
    Resalut, voici mon code modifié :

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    #include <time.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main()
    {
     
      char choix[10]; 
      long choix2;
      time_t date;
      struct tm timet;
      char *stringdate;
      char buffer[20];
      char bufferAnniv[4];
      char bufferNom[16];
      int nbm;
      FILE *fp;
     
     
     
      /* Ouverture du fichier en lecture */
     
      fp = fopen ("anniversaire.txt", "r");
     
      printf("DEBUG \n");
     
      if (fp == NULL)
        {
          perror("Fichier inexistant ! \n");
          return EXIT_FAILURE;
        }
     
      stringdate = malloc (sizeof(char) * 10);
     
      if (stringdate == NULL)
        {
          perror("Erreur allocation memoire chaine de caracteres ! \n");
          return EXIT_FAILURE;
        }
     
     
      /* Récupération de la date courante et on la formate comme ceci : jjmm */
     
      date = time(NULL);
      timet = *gmtime(&date);
     
      strftime (stringdate, 10, "%d%m", &timet);
     
      printf(" --| Nous sommes le %s \n", stringdate);
     
      /* Parcours du fichier */
      /* dans bufferAnniv on recopie la date de l'entrée dans le fichier */
      /* dans bufferNom on recopie le nom qui correspond a la date */
      /* Si la date courante correspond a la date de l'entrée dans le fichier on affiche le nom de la personne */
     
      while( fgets( buffer, sizeof(buffer), fp)!=NULL )
        {
          nbm = sscanf(buffer, "%s %s", bufferAnniv, bufferNom);
     
          if (nbm != 2)
    	{
    	  perror("Erreur conversion sscanf \n");
    	  return EXIT_FAILURE;
    	}
     
         if (strncmp(bufferAnniv, stringdate, 4) == 0)
           {
    	 printf(" --| C'est l'anniversaire de  %s ! \n", bufferNom);
           }
       }
     
      printf(" --| 1) Ajouter une entrée \n");
      printf(" --| 2) Supprimer une entrée \n");
     
      fgets(choix, sizeof(choix), stdin);
      choix2 =  strtol(choix, NULL, 10);
     
      printf("Vous avez choisi : %ld \n", choix2);
     
      fclose(fp);
     
      return EXIT_SUCCESS;
    }
    Donc voila je compile avec les options -ansi -pedantic -Wall -Werror, tout se passe bien pas de warnings ni rien. Je lance l'exécution et la rien ne se passe sauf si j'appuie sur entrée, dés que j'appuie sur entrée le programme s'exécute, d'ou ça peut venir??

    Merci merci

    [Edit] En fait a la fin du programme je demande de choisis entre 1 et 2 (tout a la fin) ben en fait le programme attend que je rentre cette valeur avant de démarrer, c'est pas normal puisque je demande de saisir son choix a la fin . . . [/Edit]
    define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

Discussions similaires

  1. Besoin d'aide pour un probléme de ICPC
    Par SQL ninjaa dans le forum C
    Réponses: 3
    Dernier message: 18/08/2012, 15h57
  2. Besoin d'aide pour un problème d'exécution
    Par parygo dans le forum MATLAB
    Réponses: 1
    Dernier message: 19/12/2010, 14h10
  3. Aide pour URL rewriting tout bête.
    Par Niki59 dans le forum Apache
    Réponses: 1
    Dernier message: 15/08/2009, 11h49
  4. Réponses: 6
    Dernier message: 26/04/2007, 12h57

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