C : lire un caractère

Sara426 Messages postés 782 Statut Membre -  
juice92 Messages postés 48 Statut Membre -
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

fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
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
juice92 Messages postés 48 Statut Membre 9
 
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
Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
 
%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
juice92 Messages postés 48 Statut Membre 9
 
ouai je suis un peu rouiller en C lol
0