setbuf函數使用注意事項

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

這種控制能力一般是通過庫函數setbuf實現的。如果buf是一個大小適當的字符數組,那麼:

setbuf(stdout,buf);

語句將通知輸入/輸出庫,所有寫入到stdout的輸出都應該使用buf作爲輸出緩衝區,直到buf緩衝區被填滿或者程序員直接調用fflush(譯註:對於由寫操作打開的文件,調用fflush將導致輸出緩衝區的內容被實際地寫入該文件),buf緩衝區中的內容才實際寫入到stdout中。緩衝區的大小由系統頭文件<stdio.h>中的BUFSIZ定義

舉例說明如下(代碼通過VS2008編譯)


#include <iostream>
#include<fstream>

int main(int argc, char* argv[])
{
    char* outbuf =  new char [100];
    setbuf(stdout,outbuf);//將輸出流綁定到outbuf上
    puts("helloworld\n");//內容輸入到outbuf內
    //setbuf(stdout,NULL);//如果啓用這行代碼,輸出流恢復原來的狀態,puts輸出到控制檯
    delete[] outbuf;
    system("pause");
    return 0;

}

發佈了30 篇原創文章 · 獲贊 7 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章