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()緩沖區沒有立即刷新。

查詢資料后,得知緩沖區刷新方式除了緩沖區滿了和'\n'進入緩沖區以外,以下方式也會刷新:

1.程序結束時會刷新,上題就是會在程序結束時刷新。

2.調用fflush(stdout)。

3.scanf()要在緩沖區讀取數據時先刷新緩沖區(避免讀取了緩沖區內要輸出的數據)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM