C語言stdio頭文件(stdio.h)中setbuf函數的用法及代碼示例。
用法:
void setbuf ( FILE * stream, char * buffer );
設置流緩衝區
一旦流已與一個打開的文件相關聯,但是在對該文件執行任何輸入或輸出操作之前。
假定緩衝區至少為BUFSIZ字節大小(請參閱setvbuf以指定緩衝區的大小)。
A 流緩衝區是作為I /O操作和與流相關聯的物理文件之間的中介的數據塊:對於輸出緩衝區,數據一直輸出到緩衝區,直到達到其最大容量為止,然後flushed(即:所有數據立即發送到物理文件並清除緩衝區)。同樣,從物理文件填充輸入緩衝區,然後將數據從該物理文件發送到操作,直到用盡為止,此時從文件中獲取新數據以再次填充緩衝區。
可以通過調用顯式刷新流緩衝區fflush。它們也會被自動衝洗fclose和freopen,或程序正常終止時。
A 全緩衝流隻要有足夠的數據,就使用緩衝區的整個大小作為緩衝區(請參見setvbuf對於其他緩衝模式)。
使用默認分配的緩衝區打開所有文件(完全緩衝)(如果已知它們不是指交互式設備)。此函數可用於設置要用作緩衝區的特定存儲塊或禁用流的緩衝。
默認流stdin和stdout是完全緩衝如果已知它們不引用交互式設備,則默認情況下為默認。否則,它們可能是行緩衝或者無緩衝默認情況下,具體取決於係統和庫的實現。同樣的道理stderr,始終是行緩衝或者無緩衝默認情況下。
對該函數的調用等同於調用setvbuf和_IOFBF如模式和BUFSIZ如尺寸(什麽時候緩衝不是null指針),或等效於使用_IONBF如模式(當它為空指針時)。
參數
返回值
沒有。示例
/* setbuf example */
#include <stdio.h>
int main ()
{
char buffer[BUFSIZ];
FILE *pFile1, *pFile2;
pFile1=fopen ("myfile1.txt","w");
pFile2=fopen ("myfile2.txt","a");
setbuf ( pFile1 , buffer );
fputs ("This is sent to a buffered stream",pFile1);
fflush (pFile1);
setbuf ( pFile2 , NULL );
fputs ("This is sent to an unbuffered stream",pFile2);
fclose (pFile1);
fclose (pFile2);
return 0;
}
在此示例中,打開了兩個文件進行寫入。與文件關聯的流myfile1.txt設置為用戶分配的緩衝區;對其進行寫操作;數據在邏輯上是流的一部分,但是直到fflush函數被調用。
示例中與文件關聯的第二個緩衝區myfile2.txt設置為無緩衝,因此後續的輸出操作將盡快寫入設備。
但是,一旦關閉文件,最終狀態對於緩衝流和未緩衝流都是相同的(關閉文件會刷新其緩衝區)。
相關用法
- C語言 remove用法及代碼示例
- C語言 rename用法及代碼示例
- C語言 tmpfile用法及代碼示例
- C語言 tmpnam用法及代碼示例
- C語言 fclose用法及代碼示例
- C語言 fflush用法及代碼示例
- C語言 fopen用法及代碼示例
- C語言 freopen用法及代碼示例
- C語言 setvbuf用法及代碼示例
- 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 setbuf function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。