所以,我在visual studio 2012旗舰版中使用getchar得到了一些奇怪的结果。这是我能想到的最简单的例子,它表明这不是一个代码错误,而是另一个正在运行的问题。

#include <cstdio>

int main(int argc, char* argv[]) {
    char c = getchar();
    putchar(c);
    return 0;
}

然而,结果显示(视觉上)有点像iostream库中的“cin”。getchar按原样返回一个字符(第一个字符),但当我按键时,它在屏幕上显示字符,直到我按enter键才返回。我搜了一下,还找不到其他的病例,有人知道这里发生了什么吗?

最佳答案

标准输入通常是行缓冲的。这意味着,当您在输入缓冲区中键入字符时,系统将读取和存储字符,直到您输入了整行文本。getchar()函数从输入缓冲区读取字符。
在大多数情况下,一次完整地读取输入行,然后在读取后处理该行更有意义。
有很多方法可以一次只输入一个字符,但它们是特定于系统的(而且有点难看)。comp.lang.c FAQ中的问题19.1讨论了这一点。

07-24 09:46
查看更多