C : lire un caractère

Bonjour,

Je programme en C.

J'aimerais que l'utilisateur entre un caractère et si c'est 1 ou 2 alors le programme rentre dans le switch.

Mon programme ressemble à peu près à ça :
int u;
scanf("%d", &u);
while((u!=1)&&(u!=2))
printf("* Mauvaise saisie *\n
scanf("%d", &u);
switch(u)
{case 1: ..........

Ca marche très bien pour tous les nombres, seulement dès que je rentre une lettre ça boucle indéfiniment.

Je ne connais pas très bien le scanf alors est-ce quelqu'un pourrait m'aider ?

Merci.

Cordialement,
Sara.

2 réponses

  1. Contributeur
    Normal que ça boucle pour une lettre. Il faut vider le buffer clavier après tes scanf. Pour commencer, mets un simple getchar(). Si tu as besoin que ça ne plante pas même si l'utilisateur rentre une vraie phrase alors dis-le et on te fera un programme plus robuste.

    Cdlt,
    1
    1. Une lettre est une chaine de caractère, alors %d ( pour double ) ou %f ( pour float ) ne marchera pas.

      je ne me rappel plus trés bien mais si une chaine de caractère se déclare string alors ce sera %s
      0
      1. %d c'est pour les entiers, pas pour les double

        mais effectivement, on peut faire avec un %s, et deja ça marche mieux, pour une chaine (qui ne se déclare pas string mais comme un tableau de char)

        voir plutot la proposition de fiddy qui me semble plus pertinente.
        0
      2. ouai je suis un peu rouiller en C lol
        0