0.引言
#include <stdio.h>
int main()
{
char ch;
while((ch = getchar()) != '#')
{
putchar(ch);
}
getchar();
return 0;
}
输入:
Hello,there. I would[enter]
回显(echoing the input):
Hello,there, I would
为什么在回显回显输入之前必须键入完整的一行呢?
1.缓冲区
1.延迟回显
延迟回显是您所键入的字符被收集并存储在一个被称为缓冲区(buffer)的临时存储区域中,按下回车键可使所键入的字符块对程序变为可用。
即:
输入 -> 送入缓冲区 -> 缓冲区内容对程序可用
2.为什么需要缓冲区
- 将若干个字符作为一个块传输比逐个发送这些字符耗时少
- 输入有误时可以删除并修正错误
3.完全缓冲I/O和行缓冲I/O
完全缓冲(fully buffered):缓冲区满时被清空(内容被发送至其目的地),通常出现在文件输入中。
行缓冲(line-buffered):遇到一个换行字符时清空缓冲区。键盘输入是标准的行缓冲。