setbuf
ストリーム バッファリングを制御します。 この関数は非推奨とされます。代わりに setvbuf
をご使用ください。
構文
void setbuf(
FILE *stream,
char *buffer
);
パラメーター
stream
FILE
構造体へのポインター。
buffer
ユーザー割り当てのバッファー。
解説
setbuf
関数は stream
のバッファリングを制御します。 引数は stream
、読み取りまたは書き込みされていない開いているファイルを参照する必要があります。 引数が buffer
指定されている NULL
場合、ストリームはバッファーに格納されません。 そうでない場合には、バッファーは長さ BUFSIZ
の文字配列を指す必要があります。ここで、BUFSIZ
は STDIO.H で定義されているバッファー サイズです。 所定のストリームに対してシステムによって割り当てられた既定のバッファーではなく、ユーザーが指定したバッファーが I/O バッファー処理に使用されます。 ストリームはstderr
既定ではバッファーされませんが、バッファーstderr
の割り当てに使用setbuf
できます。
setbuf
が置き換 setvbuf
えられました。これは、新しいコードに推奨されるルーチンです。 とは異なり setvbuf
、 setbuf
エラーを報告する方法はありません。 setvbuf
では、バッファリング モードとバッファー サイズの両方を制御することもできます。 setbuf
は、既存のコードとの互換性のために存在します。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください。
必要条件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
setbuf |
<stdio.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
// 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();
}
}
stream1 set to user-defined buffer at: 0012FCDC
stream2 buffering disabled
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示