C語言stdio頭文件(stdio.h)中setvbuf函數的用法及代碼示例。
用法:
int setvbuf ( FILE * stream, char * buffer, int mode, size_t size );
更改流緩衝
如果緩衝是一個空指針,該函數自動分配一個緩衝區(使用尺寸作為使用尺寸的提示)。否則,由指向的數組緩衝可用作緩衝尺寸個字節。
一旦流已與一個打開的文件相關聯,但是在對該文件執行任何輸入或輸出操作之前。
A 流緩衝區是作為I /O操作和與流相關聯的物理文件之間的中介的數據塊:對於輸出緩衝區,數據一直輸出到緩衝區,直到達到其最大容量為止,然後flushed(即:所有數據立即發送到物理文件並清除緩衝區)。同樣,從物理文件填充輸入緩衝區,然後將數據從該物理文件發送到操作,直到用盡為止,此時從文件中獲取新數據以再次填充緩衝區。
可以通過調用顯式刷新流緩衝區fflush。它們也會被自動衝洗fclose和freopen,或程序正常終止時。
使用默認分配的緩衝區打開所有文件(完全緩衝)(如果已知它們不是指交互式設備)。此函數可用於重新定義緩衝區尺寸或者模式,以定義user-allocated緩衝區或禁用流的緩衝。
默認流stdin和stdout是完全緩衝如果已知它們不引用交互式設備,則默認情況下為默認。否則,它們可能是行緩衝或者無緩衝默認情況下,具體取決於係統和庫的實現。同樣的道理stderr,始終是行緩衝或者無緩衝默認情況下。
參數
- stream
- 指向一個指針FILE標識開放流的對象。
- buffer
- 用戶分配的緩衝區。至少應尺寸個字節長。
如果設置為空指針,該函數將自動分配一個緩衝區。 - mode
- 指定文件緩衝的模式。三個特殊的宏常量(_IOFBF,_IOLBF和_IONBF)在中定義<cstdio>用作此參數的值:
_IOFBF 完整緩衝:在輸出時,一旦緩衝區已滿(或刷新),就將寫入數據。在輸入時,當請求輸入操作且緩衝區為空時,緩衝區將被填充。 _IOLBF 行緩衝:在輸出時,在將換行符插入流中或緩衝區已滿(或刷新)時(無論先發生什麽情況),都會寫入數據。在輸入時,當請求輸入操作且緩衝區為空時,緩衝區將填充到下一個換行符。 _IONBF 沒有緩衝:不使用緩衝區。每個I /O操作均應盡快寫入。在這種情況下,buffer和size參數將被忽略。 - size
- 緩衝區大小,以字節為單位。
如果緩衝參數是一個空指針,此值可以確定函數自動為緩衝區分配的大小。
返回值
如果將緩衝區正確分配給文件,則返回零值。否則,返回非零值;否則返回0。這可能是由於無效模式參數或分配或分配緩衝區的其他錯誤。
示例
/* setvbuf example */
#include <stdio.h>
int main ()
{
FILE *pFile;
pFile=fopen ("myfile.txt","w");
setvbuf ( pFile , NULL , _IOFBF , 1024 );
// File operations here
fclose (pFile);
return 0;
}
在此示例中,名為myfile.txt將創建一個文件,並為關聯的流請求一個1024字節的完整緩衝區,因此,每次填充1024字節的緩衝區時,輸出到此流的數據都應寫入文件中。
相關用法
- C語言 remove用法及代碼示例
- C語言 rename用法及代碼示例
- C語言 tmpfile用法及代碼示例
- C語言 tmpnam用法及代碼示例
- C語言 fclose用法及代碼示例
- C語言 fflush用法及代碼示例
- C語言 fopen用法及代碼示例
- C語言 freopen用法及代碼示例
- C語言 setbuf用法及代碼示例
- C語言 fprintf用法及代碼示例
- C語言 fscanf用法及代碼示例
- C語言 printf用法及代碼示例
- C語言 scanf用法及代碼示例
- C語言 snprintf用法及代碼示例
- C語言 sprintf用法及代碼示例
- C語言 sscanf用法及代碼示例
- C語言 vfprintf用法及代碼示例
- C語言 vfscanf用法及代碼示例
- C語言 vprintf用法及代碼示例
- C語言 vscanf用法及代碼示例
- C語言 vsnprintf用法及代碼示例
- C語言 vsprintf用法及代碼示例
- C語言 vsscanf用法及代碼示例
- C語言 fgetc用法及代碼示例
- C語言 fgets用法及代碼示例
- C語言 fputc用法及代碼示例
- C語言 fputs用法及代碼示例
- C語言 getc用法及代碼示例
- C語言 getchar用法及代碼示例
- C語言 gets用法及代碼示例
- C語言 putc用法及代碼示例
- C語言 putchar用法及代碼示例
- C語言 puts用法及代碼示例
- C語言 ungetc用法及代碼示例
- C語言 fread用法及代碼示例
- C語言 fwrite用法及代碼示例
- C語言 fgetpos用法及代碼示例
- C語言 fseek用法及代碼示例
- C語言 fsetpos用法及代碼示例
- C語言 ftell用法及代碼示例
- C語言 rewind用法及代碼示例
- C語言 clearerr用法及代碼示例
- C語言 feof用法及代碼示例
- C語言 ferror用法及代碼示例
- C語言 perror用法及代碼示例
注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C setvbuf function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。