C語言setvbuf()函式:設定檔案流的緩衝區
標頭檔案:#include <stdio.h>
函式setvbuf()用來設定檔案流的緩衝區,其原型為:
int setvbuf(FILE * stream, char * buf, int type, unsigned size);
【引數】stream為檔案流指標,buf為緩衝區首地址,type為緩衝區型別,size為緩衝區內位元組的數量。
引數型別type說明如下:
【返回值】成功返回0,失敗返回非0。
該函式涉及流和緩衝區的知識,請參考C語言流和緩衝區(快取)專題。
如果您只是想簡單的操作緩衝區,還可以使用setbuf()函式,請檢視:C語言setbuf()函式
setbuf()和setvbuf()函式的實際意義在於:使用者開啟一個檔案後,可以建立自己的檔案緩衝區,而不必使用fopen()函式開啟檔案時設定的預設緩衝區。這樣就可以讓使用者自己來控制緩衝區,包括改變緩衝區大小、定時重新整理緩衝區、改變緩衝區型別、刪除流中預設的緩衝區、為不帶緩衝區的流開闢緩衝區等。
說明:在開啟檔案流後,讀取內容之前,呼叫setvbuf()可以用來設定檔案流的緩衝區(而且必須是這樣)。
【例項】為檔案設定特殊型別緩衝區。
執行結果:
Buffer set up for input file
Buffer set up for output file
程式先開啟兩個檔案,分別設定緩衝區,根據返回值判定是否成功,最後使用fclose函式關閉這兩個檔案。
函式setvbuf()用來設定檔案流的緩衝區,其原型為:
int setvbuf(FILE * stream, char * buf, int type, unsigned size);
【引數】stream為檔案流指標,buf為緩衝區首地址,type為緩衝區型別,size為緩衝區內位元組的數量。
引數型別type說明如下:
- _IOFBF (滿緩衝):當緩衝區為空時,從流讀入資料。或當緩衝區滿時,向流寫入資料。
- _IOLBF (行緩衝):每次從流中讀入一行資料或向流中寫入—行資料。
- _IONBF (無緩衝):直接從流中讀入資料或直接向流中寫入資料,而沒有緩衝區。
【返回值】成功返回0,失敗返回非0。
該函式涉及流和緩衝區的知識,請參考C語言流和緩衝區(快取)專題。
如果您只是想簡單的操作緩衝區,還可以使用setbuf()函式,請檢視:C語言setbuf()函式
setbuf()和setvbuf()函式的實際意義在於:使用者開啟一個檔案後,可以建立自己的檔案緩衝區,而不必使用fopen()函式開啟檔案時設定的預設緩衝區。這樣就可以讓使用者自己來控制緩衝區,包括改變緩衝區大小、定時重新整理緩衝區、改變緩衝區型別、刪除流中預設的緩衝區、為不帶緩衝區的流開闢緩衝區等。
說明:在開啟檔案流後,讀取內容之前,呼叫setvbuf()可以用來設定檔案流的緩衝區(而且必須是這樣)。
【例項】為檔案設定特殊型別緩衝區。
- #include <stdio.h>
- int main(void)
- {
- FILE *input, *output;
- char bufr[512];
- input = fopen("file.in", "w+"); /*開啟檔案*/
- output = fopen("file.out", "w");
- if (setvbuf(input, bufr, _IOFBF, 512) != 0) /*失敗*/
- {
- printf("failed to set up buffer for input file\n");
- }
- else
- {
- printf("buffer set up for input file\n");
- }
- if (setvbuf(output, NULL, _IOLBF, 132) != 0) /*為流指定特殊的緩衝區*/
- {
- printf("failed to set up buffer for output file\n");
- }
- else
- {
- printf("buffer set up for output file\n");
- }
- fclose(input);
- fclose(output);
- return 0;
- }
Buffer set up for input file
Buffer set up for output file
程式先開啟兩個檔案,分別設定緩衝區,根據返回值判定是否成功,最後使用fclose函式關閉這兩個檔案。
相關文章
- C語言清空輸入緩衝區C語言
- 緩衝區溢位漏洞那些事:C -gets函式函式
- stdio流緩衝區
- c語言函式指標的定義C語言函式指標
- 檔案的複製通過字元流和緩衝流(Buffered)字元
- C語言的函式C語言函式
- C語言常用函式C語言函式
- C語言 execve()函式C語言函式
- 各個程式語言語言的檔案/函式/變數的命名方法函式變數
- C語言基礎-2、函式的定義與使用C語言函式
- C語言與嵌入式C語言的區別C語言
- C語言函式sscanf()的用法C語言函式
- C語言qsort函式的使用C語言函式
- 08. C語言函式C語言函式
- C語言 函式指標C語言函式指標
- C語言基礎函式C語言函式
- C語言函式呼叫棧C語言函式
- C語言庫函式及示例C語言函式
- C語言解讀assert函式C語言函式
- C#語言函式遞迴C#函式遞迴
- Java™ 教程(緩衝流)Java
- 緩衝位元組流#
- C語言-檔案讀寫C語言
- IO流上:概述、字元流、緩衝區(java基礎)字元Java
- C語言函式指標與回撥用函式C語言函式指標
- 實驗3 c語言函式應用程式設計C語言函式程式設計
- 實驗3 C語言函式應用程式設計C語言函式程式設計
- 【C語言】函式的概念和函式的呼叫(引數傳遞)C語言函式
- C語言巨集和函式淺析C語言函式
- C 語言回撥函式詳解函式
- c語言快速排序(庫函式使用)C語言排序函式
- c語言學習筆記===函式C語言筆記函式
- C語言有關函式淺析C語言函式
- C++的函數語言程式設計C++函數程式設計
- c語言是如何處理函式呼叫的?C語言函式
- C語言相關的基礎字串函式C語言字串函式
- 資料流&函數語言程式設計函數程式設計
- c語言多檔案編譯C語言編譯
- C語言實現檔案加密C語言加密