为什么getchar在输入一个字符后等待?

时间:2018-03-05 16:23:14

标签: c input getchar

这是我的代码:

#include <stdio.h>

int main()
{
        char a = getchar();
        printf("char: %c", a);
}

我正在使用gcc进行编译。

运行时,即使在控制台上输入一个字符后,程序也会等待输入。它不应该立即退出并打印角色吗?我在Ubuntu for Windows上运行它,如果这可以有所不同。

2 个答案:

答案 0 :(得分:5)

stdin是您的默认输入流。 stdin的默认缓冲模式是行缓冲。所以它等待输入\n。然后只有从输入流中读取的内容然后getchar获取输入并使用它。

答案 1 :(得分:3)

操作系统通常会缓冲控制台输入,直到输入新行,这样您的程序之前甚至都不会收到单个字符。可能你无能为力。