setbuf
ストリームのバッファリングを制御します。 この関数は使用されなくなりました。代わりに setvbuf を使用してください。
void setbuf(
FILE *stream,
char *buffer
);
パラメーター
stream
FILE 構造体へのポインター。buffer
ユーザーが割り当てたバッファー。
解説
setbuf 関数は、stream のバッファリングを制御します。 引数 stream は、読み取りも書き込みも行われていない開いているファイルを指します。 buffer 引数が NULL の場合、ストリームはバッファリングされません。 それ以外の場合は、buffer で長さが BUFSIZ の文字配列を指す必要があります。BUFSIZ は、STDIO.H で定義されたバッファー サイズです。 入出力バッファリングでは、ストリームに対してシステムが割り当てた既定のバッファーではなく、ユーザーが指定したバッファーが使用されます。 標準エラー (stderr) ストリームは既定ではバッファリングされませんが、setbuf 関数を使用して、標準エラー (stderr) にバッファーを割り当てることができます。
新しいコードでは、setbuf 関数の代わりに setvbuf を使用してください。 setbuf 関数は、既存のコードとの互換性のために残されています。
必要条件
ルーチン |
必須ヘッダー |
---|---|
setbuf |
<stdio.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
// 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 を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。