程序控制流程无法按预期工作

这是C的问题。 程序控制流程不符合预期。 它要求输入字符,但没有要求输入字符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; } 

为了澄清上面提到的注释,在给出输入的过程中,你按Y然后按ENTER 。 因此, y被认为是第一个getchar()的输入,而按下[ \n ]的ENTER键存储在输入缓冲区中。

在调用next getchar() ,会读取\n ,这被认为是getchar()的完全有效输入,因此您的代码不会等待下一个输入。