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;
}
相關文章
- 函式注意事項函式
- 使用find_in_set()函式的注意事項函式
- Power Apps SortByColumns 函式使用注意事項APP函式
- 使用箭頭函式的幾個注意事項函式
- Ignite自定義函式注意事項函式
- ES6中箭頭函式使用的注意事項函式
- fork 和 vfork 使用的注意事項和 system() 函式的替代函式
- 使用parallel注意事項Parallel
- Angular 14 inject 函式使用過程中的一些注意事項Angular函式
- 使用Google Fonts注意事項Go
- Go 切片使用注意事項Go
- 使用CocosBuilder注意事項UI
- removeChild使用時注意事項REM
- Oracle使用*的注意事項Oracle
- 多執行緒CreateThread函式的用法及注意事項執行緒thread函式
- TCP使用注意事項總結TCP
- C中memcpy使用注意事項memcpy
- 萬兆網路卡使用注意事項
- MySQL半同步使用注意事項MySql
- Guava HashMultimap使用及注意事項Guava
- php getallheaders使用注意事項PHPHeader
- 使用直方圖注意事項直方圖
- 空函式有參函式呼叫引數的注意事項Swift 1.1語言函式Swift
- Mysql資料庫自定義函式的定義、使用方法及操作注意事項MySql資料庫函式
- 使用 聚合函式(aggregate function)時,SQL語句的返回值的注意事項函式FunctionSQL
- Oracle臨時表使用注意事項Oracle
- 使用Vue.js的注意事項Vue.js
- 使用HTTP的三個注意事項HTTP
- 伺服器使用安全注意事項伺服器
- 不同版本exp/imp使用注意事項
- mysql索引使用技巧及注意事項MySql索引
- 快取使用中的注意事項快取
- 使用MyBatis的注意事項有哪些MyBatis
- 類别範本及其成員函式的定義及注意事項函式
- 棧空間受限情況下C/C++函式呼叫注意事項C++函式
- RandomAccessFile注意事項randomMac
- nginx 注意事項Nginx
- @Lombok注意事項Lombok