【问题标题】:What is the standard input buffer?什么是标准输入缓冲区?
【发布时间】:2012-12-28 10:49:21
【问题描述】:
#include <stdio.h>

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

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

【问题讨论】:

  • 这似乎是 C,而不是 C++,因此,这与 cin 流没有任何关系。

标签: c stdin getchar putchar


【解决方案1】:

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

默认情况下,终端会收集用户的输入,直到他按下 Enter/Return。然后将整行推送到程序的输入文件流(stdin,即;由于您使用&lt;stdio.h&gt; 而不是&lt;iostream&gt;,因此不涉及cin)。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2016-10-25
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2018-12-12
    相关资源
    最近更新 更多