Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calculette : scanf qui se réalise pas

...si la première valeur n'est pas un chiffre

Sujet résolu
    13 décembre 2005 à 11:35:00

    Bonjour, voilà ce que j'ai codé pour faire une calculette toute bête.
    Pour additionner deux nombres entiers en fait.


    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {
      long chiffre_1 = 0, chiffre_2 = 0, resultat;

      printf("Faire une addition (chiffres entiers) :\n");

      printf("Premier chiffre ? ");
      scanf("%ld", &chiffre_1);

      printf("Deuxieme chiffre ? ");
      scanf("%ld", &chiffre_2);

      resultat = chiffre_1 + chiffre_2;

      printf("La somme de ces deux chiffres vaut %ld\n", resultat);
     
      system("PAUSE");     
      return 0;
    }


    Le "problème", si on peut appeler ça comme ça, c'est que si je mets 1 pour le chiffre 1, et que je tape par exemple un E pour le chiffre 2, alors il calcule bien 1 + 0 = 1, et le résultat vaut 1.

    Par contre, si je mets un E pour le premier chiffre, alors le programme me sort directement "Deuxieme chiffre ? La somme de ces deux chiffres vaut 0". C'est à dire qu'il ne me laisse pas taper mon deuxième chiffre.

    Est-ce que vous pourriez m'expliquer pourquoi ça fait ça ?

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      13 décembre 2005 à 11:46:38

      Premier scanf >> aucune valeur attribué à la variable, ton scanf renvoit 0 (la doc de scanf te dirait qu'il renvoit le nombre de champ affectés). Du coup le E n'étant pas pour lui, c'est l'autre qui va essayer de le prendre. Mais encore uen fois la variable ne sera pas affectée car c'edt pas le bon type.
      Pour faire un petit scanf sûr, fais un

      do
      {
      printf("Premier chiffre ? ");
      }
      while (scanf("%ld", &chiffre_1) == 0)

      • Partager sur Facebook
      • Partager sur Twitter
        13 décembre 2005 à 12:24:31

        Merci pour cette info :) !

        (question bête : le "ok" à coté d'un message pour signaler que le pb est résolu, on peut le mettre nous même, ou c'est le boulot des modos ?)
        • Partager sur Facebook
        • Partager sur Twitter
          13 décembre 2005 à 12:35:12

          Les modos et l'auteur du topic peuvent mettre un topic en résolu. Donc tu le peux (et tu le dois :D ) si ton topic est réglé
          • Partager sur Facebook
          • Partager sur Twitter

          If you'd like to join us, read "How do we work at OpenClassrooms"! :)

            13 décembre 2005 à 13:27:15

            Justement, si je posais cette question bête, c'est que malgré le fait que j'ai cherché... Ben j'ai pas trouvé :-° ...

            Je sais, vous allez me dire où c'est et je vais me rendre compte que c'était évident... C'est toujours comme ça.. :euh:
            • Partager sur Facebook
            • Partager sur Twitter

            Calculette : scanf qui se réalise pas

            × 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