Deuxième scanf ne fonctionne pas

J’ai des problèmes avec ce code de langue c:

char st[2]; printf("enter first value:"); scanf("%c", &st[0]); printf("enter second value:"); scanf("%c", &st[1]); 

Donc, mon ordinateur ne m’a pas demandé de saisir la deuxième valeur, c’est-à-dire qu’il n’imprimait que la première instruction printf , puis que je saisissais un caractère, puis imprimait uniquement la deuxième instruction printf et que le programme se terminait sans prendre la deuxième entrée.

S’il vous plaît aider. Quel est le problème avec ce code?

-Merci d’avance.

Eh bien ça l’a fait. Le ou les caractères produits par la touche ENTER sont déjà présents dans la mémoire tampon.

Je pense que votre problème est que le second scan reçoit la touche “Entrée”.

Vous obtenez la nouvelle ligne implicite que vous avez entrée comme deuxième caractère, c’est-à-dire que st[1] reçoit la valeur '\n' . Une solution simple consiste à inclure la nouvelle ligne dans la chaîne de format souhaitée: scanf("%c\n", &st[0]);

Changement

 scanf("%c", &st[0]); 

pour ça

 scanf(" %c", &st[0]); 

C’est une bonne réponse (pas de vérification d’erreur ou quoi que ce soit) mais c’est rapide et facile.

utilisez fflush(stdin); fonction avant le second scanf(); . La touche ENTER générée après le premier scanf (); En fait, votre deuxième scanf () prend ENTER comme entrée et comme scanf se termine après avoir obtenu une ENTER, il ne prend rien d’autre à vos côtés.