2012-12-28 150 views
3
#include <stdio.h> 

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

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

+1

这似乎是C,而不是C++,因此,这与cin流没有任何关系。 – 2012-12-28 11:00:43

回答

3

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

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

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

特别是关于你的问题,如果它包含三个字符,那么一行输入对三个getchar()调用有好处。如果您只输入一个字符,则您的程序应该在随后的getchar()调用中等待更多输入。

+0

非常感谢你! –