setbuf函式使用注意點

2021-07-25 09:28:46 字數 447 閱讀 4186

程式輸出有兩種方式:一種是即時處理方式,另一種是先暫存起來,然後再大塊寫入的方式,前者往往造成較高的系統負擔。因此,c語言實現通常都允許程式設計師進行實際的寫操作之前控制產生的輸出資料量。

這種控制能力一般是通過庫函式setbuf實現的。如果buf是乙個大小適當的字元陣列,那麼:

setbuf(stdout,buf);

語句將通知輸入/輸出庫,所有寫入到stdout的輸出都應該使用buf作為輸出緩衝區,直到buf緩衝區被填滿或者程式設計師直接呼叫fflush(譯註:對於由寫操作開啟的檔案,呼叫fflush將導致輸出緩衝區的內容被實際地寫入該檔案),buf緩衝區中的內容才實際寫入到stdout中。緩衝區的大小由系統標頭檔案中的bufsiz定義。

舉例說明如下(**通過vs2008編譯)

#include

#include

int main(int argc, char* argv)

setbuf函式 詳解

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

setbuf使用細節

include int main return 0 setbuf stdout,buf 之後的每一次使用putchar函式在呼叫fflush函式就把該字元寫到buf中,等main函式返回後就把快取裡面的東西列印出來。include int main return 0 當更改fflush函式的位置後,...

GROUP BY 與聚合函式 使用注意點

表的設計 表裡面的內容 一 在不使用聚合函式的時候,group by 子句中必須包含所有的列,否則會報錯,如下 select name,mon from 測試 group by name 會報錯 在子句中加上所有的列的時候 select name,mon from 測試 group by name,...