比較C說話中的setbuf()函數和setvbuf()函數的應用。本站提示廣大學習愛好者:(比較C說話中的setbuf()函數和setvbuf()函數的應用)文章只能為提供參考,不一定能成為您想要的結果。以下是比較C說話中的setbuf()函數和setvbuf()函數的應用正文
C說話setbuf()函數:把緩沖區與流相干聯
頭文件:
#include <stdio.h>
函數setbuf()用於將指定緩沖區與特定的文件流相干聯,完成操作緩沖區時直接操作文件流的功效。其原型以下:
void setbuf(FILE * stream, char * buf);
【參數】stream為文件流指針,buf為緩沖區的肇端地址。
假如參數buf 為NULL 指針,則為無緩沖,setbuf()相當於挪用setvbuf(stream, buf, buf ? _IOFBF : _IONBF, BUFSIZE)。
解釋:在翻開文件流後,讀取內容之前,可以挪用setbuf()來設置文件流的緩沖區(並且必需是如許)。
【實例】不雅察緩沖區與流聯系關系後的影響。
#include <stdio.h> char outbuf[BUFSIZ]; int main(void) { setbuf(stdout, outbuf); // 把緩沖區與流相連 puts("This is a test of buffered output.\n"); puts(outbuf); fflush(stdout); // 刷新 puts(outbuf); // 輸入 return 0; }
輸入成果:
This is a test of buffered output.. This is a test of buffered output.. This is a test of buffered output.. This is a test of buffered output..
法式先把outbuf與輸入流相連,然後輸入一個字符串,這時候由於緩沖區曾經與流相連,所以outbuf中也保留著這個字符串,緊接著puts函數又輸入一遍,所以如今outbuf中保留著兩個一樣的字符串。刷新輸入流以後,再次puts,則又輸入兩個字符串。
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()可以用來設置文件流的緩沖區(並且必需是如許)。
【實例】為文件設置特別類型緩沖區。
#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函數封閉這兩個文件。