printf()刷新缓冲区
Posted qiu00
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了printf()刷新缓冲区相关的知识,希望对你有一定的参考价值。
看到一个关于fork()的题目(来源于:https://mp.weixin.qq.com/s/MsGeaWNmSVOCT7kXFrQm_g),如下:
#include <stdio.h> #include <sys/types.h> #include <unistd.h> int main(void) { int i; for(i=0; i<2; i++){ fork(); printf("-"); } wait(NULL); wait(NULL); return 0; }
结果是输出8个‘-‘,解释的原因是printf()缓冲区没有立即刷新。
查询资料后,得知缓冲区刷新方式除了缓冲区满了和‘ ‘进入缓冲区以外,以下方式也会刷新:
1.程序结束时会刷新,上题就是会在程序结束时刷新。
2.调用fflush(stdout)。
3.scanf()要在缓冲区读取数据时先刷新缓冲区(避免读取了缓冲区内要输出的数据)。
以上是关于printf()刷新缓冲区的主要内容,如果未能解决你的问题,请参考以下文章
Linux C语言printf()函数不加换行符就不能输出打印的内容(fflush(stdout) 刷新缓冲区)