setbuf使用細節

2021-08-30 17:58:08 字數 914 閱讀 3846

#include int main()

return 0;

}

setbuf(stdout, buf);==>之後的每一次使用putchar函式在呼叫fflush函式就把該字元寫到buf中,等main函式返回後就把快取裡面的東西列印出來。

#include int main()

return 0;

}

當更改fflush函式的位置後,輸出相比輸入會缺少乙個

原因:當讀到1,fflush() 執行一次空操作,接著遇到putchar(),然後把當前字元存到buf中。進如第二次迴圈,讀取到2,但是fflush()此刻才把buf(內容為1)中的內容讀走。進入第三次迴圈,讀取到3,但是fflush()此刻才把buf(內容為1,2)中的內容讀走。進入第四次迴圈,讀取到『b』,退出while迴圈。main函式返回,輸出12

輸出亂碼,為什麼?當main函式返回時,buf為區域性變數,被釋放掉。buf裡面的內容沒有被及時讀走,所以輸出亂碼解決辦法:把buf變數宣告為全域性變數,或者使用static關鍵字,或者在退出while迴圈之後使用fflush()函式

setbuf函式使用注意點

程式輸出有兩種方式 一種是即時處理方式,另一種是先暫存起來,然後再大塊寫入的方式,前者往往造成較高的系統負擔。因此,c語言實現通常都允許程式設計師進行實際的寫操作之前控制產生的輸出資料量。這種控制能力一般是通過庫函式setbuf實現的。如果buf是乙個大小適當的字元陣列,那麼 setbuf stdo...

setbuf函式 詳解

程式輸出有兩種方式 一種是即時處理方式,另一種是先暫存起來,然後再大塊寫入的方式,前者往往造成較高的系統負擔。因此,c語言實現通常都允許程式設計師進行實際的寫操作之前控制產生的輸出資料量。這種控制能力一般是通過庫函式setbuf實現的。如果buf是乙個大小適當的字元陣列,那麼 setbuf stdo...

setbuf關閉流緩衝

開啟和關閉緩衝機制。功 能 把緩衝區與流相聯 用 法 void setbuf file steam,char buf 說明 setbuf函式具有開啟和關閉緩衝機制。為了帶緩衝進行i o,引數buf必須指向乙個長度為bufsiz 定義在stdio.h標頭檔案中 的緩衝區。通常在此之後該流就是全緩衝的,...