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

-2 c getchar

这是一个问题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;
}
Run Code Online (Sandbox Code Playgroud)

Sou*_*osh 6

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

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