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語言setbuf()函式:把緩衝區與流相關聯C語言函式
- C語言檔案與目錄(四)緩衝區C語言
- C語言緩衝區問題C語言
- C語言清空輸入緩衝區C語言
- 如何設定檔案的緩衝
- C語言fputc()函式:寫檔案函式(將一指定字元寫入檔案流中)C語言函式字元
- 緩衝區溢位漏洞那些事:C -gets函式函式
- C語言setgroups()函式:設定組程式碼函式C語言函式
- C語言putc()函式:寫檔案函式(將一指定字元寫入檔案中)C語言函式字元
- C語言清空輸入緩衝區的N種方法對比C語言
- C語言unlink()函式:刪除檔案C語言函式
- C語言fchmod()函式:修改檔案的許可權C語言函式
- 檔案的複製通過字元流和緩衝流(Buffered)字元
- C語言link()函式:建立檔案連線C語言函式
- C 標準庫IO緩衝區和核心緩衝區的區別
- C語言函式手冊:c語言庫函式大全|C語言標準函式庫|c語言常用函式查詢C語言函式
- c語言函式指標的定義C語言函式指標
- C語言lseek()函式:移動檔案的讀寫位置C語言函式
- C語言lstat()函式:由檔案描述詞取得檔案狀態C語言函式
- C語言fstat()函式:由檔案描述詞取得檔案狀態C語言函式
- C語言fgetc()函式:讀檔案函式(由檔案中讀取一個字元)C語言函式字元
- C語言remove()函式:刪除檔案或目錄C語言REM函式
- C語言chown()函式:改變檔案所有者C語言函式
- 第五篇:使用無緩衝IO函式讀寫檔案函式
- C語言rewind()函式:將檔案指標重新指向檔案開頭C語言函式指標
- C語言alarm()函式:設定訊號傳送鬧鐘C語言函式
- C語言symlink()函式:建立檔案符號連線C語言函式符號
- C語言rename()函式:重新命名檔案或目錄C語言函式
- C語言中的檔案流C語言
- C語言fopen()函式:開啟一個檔案並返回檔案指標C語言函式指標
- C語言 execve()函式C語言函式
- C語言常用函式C語言函式
- C語言與嵌入式C語言的區別C語言
- C語言setpriority()函式:設定程式程式執行優先權C語言函式
- C語言基礎-2、函式的定義與使用C語言函式
- C語言函式sscanf()的用法C語言函式
- C語言qsort函式的使用C語言函式
- 各個程式語言語言的檔案/函式/變數的命名方法函式變數