缓冲区的优点很明显,它加快了程序的运行速度,减少了硬件的读写次数,让整个计算机变得流畅起来;但是,缓冲区也带来了一些负面影响,经过前面几节的学习相信读者也见识到了。
那么,该如何消除这些负面影响呢?思路其实也很简单,在输入输出之前清空(刷新)缓冲区即可:
- 对于输出操作,清空缓冲区会使得缓冲区中的所有数据立即显示到屏幕上;很明显,这些数据没有地方存放了,只能输出了。
- 对于输入操作,清空缓冲区就是丢弃残留字符,让程序直接等待用户输入,避免引发奇怪的行为。
本节的代码用到了一些暂时没有学到的知识,估计很多初学者会不理解,没关系,那就先记住吧,记不住就复制吧,总之,按照葫芦画瓢就完了。
清空输出缓冲区
清空输出缓冲区很简单,使用下面的语句即可:
fflush() 是一个专门用来清空缓冲区的函数,stdout 是 standard output 的缩写,表示标准输出设备,也即显示器。整个语句的意思是,清空标准输出缓冲区,或者说清空显示器的缓冲区。
Windows 平台下的 printf()、puts()、putchar() 等输出函数都是不带缓冲区的,所以不用清空,下面的代码演示了如何在 Linux 和 Mac OS 平台下清空缓冲区