什么是标准输入缓冲区?

YaR*_*aR_ 5 c stdin putchar getchar

#include <stdio.h>

int main(void)
{
    int c;
    c = getchar();
    putchar(c);
    c = getchar();
    putchar(c);
    c = getchar();
    putchar(c);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想了解为什么被调用三次的函数与仅输入一次的行一起工作。有人解释说,在这种情况下我们使用标准输入缓冲区,那是一块内存。我想读一些相关内容。你能给我一些资源吗?

Ste*_*sky 4

这是终端(命令行窗口)的一项功能。

默认情况下,终端将收集用户的输入,直到他按下 Enter/Return。然后整行被推送到程序的输入文件流(stdin,也就是说;因为您使用<stdio.h>而不是<iostream>,所以不cin涉及)。

这很有用,因为您的程序不必处理解释所有键盘事件(例如,按下 Backspace 时删除字母)。想要自己处理键盘的程序可以禁用此默认输入模式。我认为相关的谷歌关键字是terminfoor termcap

getchar()具体来说,关于您的问题,如果一行输入包含三个字符,则一行输入适合三个调用。如果您只输入了一个字符,您的程序应该等待后续getchar()调用以获取更多输入。