为什么需要缓冲区?
1.将若干个字符作为一个块传输比逐个发送这些字符耗费的时间少.
2.如果输入有错误,就可以使用您的键盘更正功能来修正错误.当最终按下回车键时,您就可以发送正确的输入.
也有需要禁用缓冲区的情况
一些交互性的程序需要非缓冲区输入,例如在游戏中,你希望一按下键就执行某些命令.
因此,缓冲和非缓冲输入具有他们各自的用途
缓冲分为两类:
1.完全缓冲(fully buffered)I/O 缓冲区满时被清空(内容被发送置其目的地) 这种类型的缓冲通常出现在文件输入中,缓冲区大小取决于系统,512和4096字节是常见的值
2.行缓冲(line-buffered)I/O 对行缓冲I/O来说,遇到一个换行符时将被清空缓冲区.键盘输入是标准的行缓冲,因此按下回车键将清空缓冲区.
我们现在使用的是那种类型的输入:缓冲还是非缓冲?
1.ANSIC 指定应该对输入进行缓冲 (原因是一些计算机设计不允许非缓冲输入)
2.K&R则将选择权留给了编译器的编写者
使用不同的函数来决定输入是缓冲的还是非缓冲的
行缓冲的 getchar() 在stdio.h头文件里定义
非缓冲的 getche() 回显 conio.h
getch() 非回显 conio.h 回显和非回显的区别就是在控制台输入的字符是否可见,非回显就是输入的字符不可见
输出流和这个类似
草草收尾了