C语言中 fflush 的用法

函数原型: int fflush(FILE *stream)
头文件:stdio.h
功能:清除读写缓冲区,需要立即把输出缓冲区的数据进行物理打印时就会用到此函数。

fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃,要理解这点,还需要了解scanf 的运行机制,因为 scanf 采用格式匹配的方法,因此当输入有误,格式不匹配的部分会残留在输入缓冲区中,被当做下次 scanf 的读入。这时需要用 fflush 进行清洗。

fflush(stdout)刷新标准输出缓冲区,将输出缓冲区中的内容直接打印到输出设备上。当循环执行 printf 语句时,编译器生成的机器码并不是按源代码的意愿进行逐条输出,而是将多条输出存放在输出缓冲区中,最后一次性打印。在输出语句后面加上\n 也会刷新缓冲区,但是\r不行,但有时我们只想在本行进行一条一条的输出,这时就需要加上 fflush(stdout)

printf 是一个行缓冲函数,它先缓冲要输出的内容,在满足一些条件的情况下,调用 write 系统函数,需要的条件为:

  1. 缓冲区满
  2. 遇到\n
  3. 调用 fflush 函数来冲洗缓冲区
  4. scanf 读取缓冲区中的内容
  5. 调用printf 函数的进程或线程结束时会调用 fflush 函数清洗缓冲区。

具体示例见:
https://blog.csdn.net/wh_computers/article/details/95207938

posted @ 2022-07-27 11:04  yukina~  阅读(1582)  评论(0编辑  收藏  举报