Le stream de contrôle du programme ne fonctionne pas comme prévu

C’est un problème en C Le programme Le stream de contrôle n’est pas celui attendu. Il demande à entrer le caractère mais ne demande pas à entrer le caractère x.

 int foo(); int main(int argc, const char * argv[]) { foo(); return 0; } int foo(){ char in; char x; printf("Do you wanna party \n"); if((in = getchar()) == 'y') printf("Go Sleep!, I was kidding\n"); else printf("Oh! you are so boaring..\n"); printf("\nOk, Another Question\n"); printf("Wanna Go to Sleep\n"); if((x = getchar()) == 'y') printf("ok lets go, Sleepy Head\n"); else printf("No, lets go\n"); return 0; } 

Pour clarifier les commentaires mentionnés ci-dessus, dans le processus de saisie, vous appuyez sur Y , puis sur ENTER . Donc, y est considéré comme l’entrée de la première getchar() , et la touche ENTER enfoncée [ \n ] est stockée dans le tampon d’entrée.

Lors de l’appel de next getchar() , le \n est lu, ce qui est considéré comme une entrée parfaitement valide pour getchar() et votre code n’attend donc pas l’entrée suivante.