setbuf
資料流緩衝的控制項。 這個函式已被取代。 使用setvbuf相反。
void setbuf(
FILE *stream,
char *buffer
);
參數
stream
指標FILE結構。buffer
使用者配置的緩衝區。
備註
setbuf函式控制項的緩衝, stream。 stream引數必須是指向已開啟的檔案,未經讀取或寫入。 如果buffer引數是NULL,此資料流是 un-buffered。 如果不是,緩衝區必須指向長度的字元陣列BUFSIZ,其中BUFSIZ是定義在 STDIO 中的緩衝區大小。H. 使用者指定緩衝區,而不是預設系統配置緩衝區的指定資料流,用於 I/O 緩衝區。 stderr資料流是預設的情況下,un-buffered,但是您可以使用setbuf來指派緩衝區以stderr。
setbuf已經被取代成 setvbuf,這是慣用的常式,以新的程式碼。 setbuf保留與現有的程式碼的相容性。
需求
常式 |
所需的標頭 |
---|---|
setbuf |
<stdio.h> |
其他的相容性資訊,請參閱相容性在簡介中。
範例
// crt_setbuf.c
// compile with: /W3
// This program first opens files named DATA1 and
// DATA2. Then it uses setbuf to give DATA1 a user-assigned
// buffer and to change DATA2 so that it has no buffer.
#include <stdio.h>
int main( void )
{
char buf[BUFSIZ];
FILE *stream1, *stream2;
fopen_s( &stream1, "data1", "a" );
fopen_s( &stream2, "data2", "w" );
if( (stream1 != NULL) && (stream2 != NULL) )
{
// "stream1" uses user-assigned buffer:
setbuf( stream1, buf ); // C4996
// Note: setbuf is deprecated; consider using setvbuf instead
printf( "stream1 set to user-defined buffer at: %Fp\n", buf );
// "stream2" is unbuffered
setbuf( stream2, NULL ); // C4996
printf( "stream2 buffering disabled\n" );
_fcloseall();
}
}
.NET Framework 對等用法
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。