1、 概念介绍
缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对I/O的数据做临时存储,这部分预留的内存空间叫缓冲区。
使用缓冲区有两个好处:
1、减少实际物理读写次数
2、缓冲区在创建时就被分配内存,这块内存区域一直被重用,可以减少动态分配和回收内存的次数
一般在实际过程中,我们一般是先将文件读入内存,再从内存写入到别的地方,这样在输入输出过程中我们都可以用缓存来提升IO性能。
2、前几天课设写了一个循环:
#include<stdio.h>
....
int ch;
char c;
ch = getchar();
while(ch !='q')
{
.......
scanf("%c", &c);
ch = getchar();
}
....
结果这个就成个死循环。(之前可能没好好了解缓冲区)
原因是我在scanf输入数据后会按回车结束。结果我的回车('\n')还留在缓冲区,之后的getchar就直接接收了缓冲区的'\n'然后造成了这个死循环!
这个例子中我们可以在scanf后面加一个getchar()吃掉这个'\n', 或者用fflush(stdin)清空缓冲区。
fflush的函数原型 int fflush(FILE *stream)。