什么是标准输入缓冲区?

时间:2012-12-28 10:49:21

标签: c stdin getchar putchar

#include <stdio.h>

int main(void)
{
    int c;
    c = getchar();
    putchar(c);
    c = getchar();
    putchar(c);
    c = getchar();
    putchar(c);
    return 0;
}

我想理解为什么三次调用的函数只使用一次输入的行。 有人解释说,在这种情况下我们使用标准输入缓冲区,那是一块内存。 我想读一些关于它的东西。你能告诉我一些资源吗?

1 个答案:

答案 0 :(得分:3)

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

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

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

特别是关于你的问题,如果一行输入包含三个字符,那么一行输入适用于三个getchar()个调用。如果您只输入了一个字符,那么您的程序应该等待后续getchar()次调用以获得更多输入。