在进行输入输出操作或者文件读写时,由于涉及到缓冲区的使用,可能遇到一些问题。
例如,scanf()
函数用于从stdin
输入信息,在从标准输入缓冲区读取信息时,往往以'\n'
作为结束输入的标志,但是换行符'\n'
仍然残留在缓冲区中,下次再次从标准输入读取信息时,残留的换行符'\n'
会被当做有效信息读取,即,上一次的输入影响了下一次的输入。
再例如,通过 printf()
函数向标准输出打印信息时,待输出的信息可能迟迟没有显示在标准输出上,因为信息还保留在标准输出缓冲区中。有时候向文件中写入的信息无法完整保存,可能也是由于缓冲区中的内容没有及时刷新到文件中。
在遇到这些问题时,可以通过清空缓冲区的方法解决。
C语言中用于清空缓冲区的函数是fflush()
,使用时需要包含头文件<stdio.h>
,函数原形如下:
int fflush(FILE * stream);
如果stream
是输出文件,则fflush()
的作用是与之相关联的输出缓冲区中的文件立即写入该文件;如果stream
是输入文件,则fflush()
的作用是清空与之相关联的输入缓冲区中的内容。