C语言知识点二十一: 缓冲区

缓冲区:

1.无缓冲(直接)输入:用户输入字符后立即重复打印该字符。

2.缓冲输入 : 大部分系统在用户按下Enter键之前不会重复打印刚输入的字符。

用户输入的字符被收集并储存在一个被称为缓冲区(buffer)的临时存储区,按下Eenter键后,程序才可使用用户输入的字符。

3.为什么要有缓冲区?

No.1: 把若干字符作为一个块进行传输比逐个发送这些字符节约时间;

No.2: 如果用户打错字符,可以直接通过键盘修正错误。

4. 虽然缓冲输入好处很多,但是某些交互式程序也需要无缓冲输入。例如,在游戏中,你希望按下一个键就执行相应的指令。因此,缓冲输入和无缓冲输入都有用武之地。

5.完全缓冲:当缓冲区被填满是才刷新缓冲区(内容被发送至目的地),通常出现在文件输入中。缓冲区的大小取决于系统,常见的大小是512字节和4096字节。

6.行缓冲: 出现换行符时刷新缓冲区。键盘输入通常是行缓冲输入,所以按下Enter键后才刷新缓冲区。

7.ANSI C和后续的C标准都是规定输入是缓冲的。

8. 许多IBM PC兼容机的编译器都为支持无缓冲输入提供一系列特殊的函数,其原型都在conio.h头文件中。

这些函数包括用于回显无缓冲输入的getche()函数和用于无回显无缓存输入的getch()函数。

请看以下三个函数的区别:

getchar(),getch(),getche():

第一行是手动输入的,第二行是printf输出的。

getch()和getche()这两个函数使用时要包含conio.h头文件:

getch()函数,也是接收键盘输入的一个字符,但不用回车确认!

getche函数,同样接收一个字符,不需要回车确认!但输入时明文显示(回显)。


猜你喜欢

转载自blog.csdn.net/weixin_41588502/article/details/80962417