getchar没有等待用户输入

时间:2016-02-11 13:39:56

标签: c getchar

第二个getchar函数不等待用户输入。无法弄清楚以下代码中缺少的内容

char ch = 'n';
bool status = false;

printf("%s", "Some text1\n");
ch = getchar();

if ((ch == 'Y') || (ch == 'y'))
{
    status = true;
}

if(status)
{
    printf("%s", "Some text2\n");
    ch = getchar();

    if ((ch == 'Y') || (ch == 'y'))
    {
        status = eNoError;
    }
}

2 个答案:

答案 0 :(得分:5)

那是因为换行符。

当您输入第一个'Y'时,实际上输入的字符串为"Y\n"

首先getchar()读取'Y''\n'位于缓冲区中。 因此第二个getchar()获得'\n'个字符。

答案 1 :(得分:0)

我很抱歉把这篇文章弄死了,但我发布这个帖子是为了以防其他人遇到这个问题并想要一个更好的答案。解决此问题的最简单方法是在第一个 getchar 和第二个之间刷新输入:

ch = getchar();
fflush(stdin); // can be anywhere in between the getchar() calls
ch = getchar();

希望这有助于某人继续前进