Partage
  • Partager sur Facebook
  • Partager sur Twitter

scanf

mettre une lettre a la place d'un nombre

Sujet résolu
    2 septembre 2007 à 17:32:23

    Salut a vous cher zéros !
    alors voila mon problème je n'arrive pas arrêter le bug du scanf, car dans le menu je propose deux action, donc il faut taper 1 ou 2, mais si je tape une lettre le programme s'emballe dans une boucle infinie malgré le else et le while.
    voila le code :

    main.c

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include "fonctions.h"
    4. int main(void)
    5. {
    6.     long choixdumenu;
    7.     do
    8.         {
    9.        // Titre LE PENDU
    10.        printf("                          **************\n                          *  LE PENDU  *\n                          **************\n");
    11.        // Le menu
    12.            printf(" 1.Jouer\n 2.Quitter\n");
    13.            scanf("%ld", &choixdumenu);
    14.        check(choixdumenu);
    15.     }while (choixdumenu != 1);
    16.         return 0;
    17. }


    fonctions.c
    1. #include <ctype.h>
    2. char readchar()
    3. {
    4.     char lettre;
    5.     lettre = getchar();//lire la premiere  lettre
    6.     lettre = toupper(lettre);//Met la lettre en majescule en cas ou elle ne l'est pas
    7.     while(getchar() != '\n' );//lire les lettres jusque a la fin de mot pour les éffacer de la memmoire
    8.     return lettre;
    9. }
    10. //Fonction pour vérifier le choix du menu
    11. void check(long choix)
    12. {
    13.     if (choix == 2)
    14.       {
    15.           exit (0);
    16.       }
    17.     else if (choix != 1)
    18.       {
    19.           printf("Refaites votre choix svp .\n\n");
    20.       }
    21.     else
    22.       {
    23.           return 0;
    24.       }
    25. }


    note : il y a aussi un fichier fonctions.h qui contien les headers mais je crois pas qu'il vous intéressera


    Merci .
    • Partager sur Facebook
    • Partager sur Twitter
      2 septembre 2007 à 17:43:07

      1. scanf("%c", &variableDeTypeChar);
      • Partager sur Facebook
      • Partager sur Twitter
        2 septembre 2007 à 18:05:57

        Oui j'ai essayer sa, mais la boucle cette fois affiche :

        Citation : Pas de titre

        **************
        * LE pendu *
        **************

        1.Jouer
        2.Quitter

        et tous le reste



        Sa l'affiche deux fois a chaque fois que je tape un nombre ou lettre.
        Mais merci tout de meme.
        • Partager sur Facebook
        • Partager sur Twitter
          2 septembre 2007 à 19:45:33

          Merci, le tuto il est trop bien.
          • Partager sur Facebook
          • Partager sur Twitter

          scanf

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown