次の方法で共有


setbuf

更新 : 2007 年 11 月

ストリームのバッファリングを制御します。この関数は使用されなくなりました。代わりに 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();
   }
}

stream1 set to user-defined buffer at: 0012FCDC
stream2 buffering disabled

.NET Framework の相当するアイテム

適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

参照

ストリーム入出力

fclose、_fcloseall

fflush

fopen、_wfopen

setvbuf