程序控制流程没有按预期工作

时间:2014-12-16 20:09:52

标签: 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;
}

1 个答案:

答案 0 :(得分:6)

为澄清上述评论,在提供输入的过程中,您按 Y 然后按 ENTER 。因此,y被视为第一个getchar()的输入,ENTER键按[\n]存储在输入缓冲区中。

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