描述
C庫函數int setvbuf(FILE *stream, char *buffer, int mode, size_t size)定義應如何緩衝流。
聲明
以下是 setvbuf() 函數的聲明。
int setvbuf(FILE *stream, char *buffer, int mode, size_t size)
參數
stream- 這是指向標識打開流的 FILE 對象的指針。
buffer− 這是用戶分配的緩衝區。如果設置為 NULL,該函數會自動分配指定大小的緩衝區。
mode- 這指定了文件緩衝的模式 -
不。 | 模式和描述 |
---|---|
1 |
_IOFBF Full buffering− 在輸出時,一旦緩衝區已滿就寫入數據。在輸入時,當請求輸入操作並且緩衝區為空時填充緩衝區。 |
2 |
_IOLBF Line buffering- 在輸出時,當一個換行符插入到流中或緩衝區已滿時寫入數據,先發生什麽。在輸入時,當請求輸入操作並且緩衝區為空時,緩衝區被填充直到下一個換行符。 |
3 |
_IONBF No buffering− 不使用緩衝區。每個 I/O 操作都會盡快寫入。緩衝區和大小參數被忽略。 |
size- 這是緩衝區大小(以字節為單位)
返回值
此函數在成功時返回零,否則返回非零值。
示例
下麵的例子展示了 setvbuf() 函數的用法。
#include <stdio.h>
int main () {
char buff[1024];
memset( buff, '\0', sizeof( buff ));
fprintf(stdout, "Going to set full buffering on\n");
setvbuf(stdout, buff, _IOFBF, 1024);
fprintf(stdout, "This is tutorialspoint.com\n");
fprintf(stdout, "This output will go into buff\n");
fflush( stdout );
fprintf(stdout, "and this will appear when programm\n");
fprintf(stdout, "will come after sleeping 5 seconds\n");
sleep(5);
return(0);
}
讓我們編譯並運行上麵的程序以產生以下結果。這裏程序不斷將輸出緩衝到buff直到它第一次調用 fflush(),之後它再次開始緩衝輸出並最終休眠 5 秒。它在程序出來之前將剩餘的輸出發送到 STDOUT。
Going to set full buffering on This is tutorialspoint.com This output will go into buff and this will appear when programm will come after sleeping 5 seconds
相關用法
- C語言 setviewport()用法及代碼示例
- C語言 setlocale()用法及代碼示例
- C語言 setlinestyle()用法及代碼示例
- C語言 宏 setjmp()用法及代碼示例
- C語言 setbuf()用法及代碼示例
- C語言 setfillstyle() and floodfill()用法及代碼示例
- C語言 sector()用法及代碼示例
- C語言 sinh()用法及代碼示例
- C語言 scanf()用法及代碼示例
- C語言 strcspn()用法及代碼示例
- C語言 showbits()用法及代碼示例
- C語言 sqrt()用法及代碼示例
- C語言 system()用法及代碼示例
- C語言 strtol()用法及代碼示例
- C語言 sprintf()用法及代碼示例
- C語言 sscanf()用法及代碼示例
- C語言 snprintf()用法及代碼示例
- C語言 strrchr()用法及代碼示例
- C語言 strftime()用法及代碼示例
- C語言 strtok()用法及代碼示例
注:本文由純淨天空篩選整理自 C library function - setvbuf()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。