ストリーム入出力用のバッファ領域をユーザプログラムの側で定義して設定します。
long setvbuf(FILE *fp, char *buf, long type, size_t size);
setvbuf関数は、ファイルポインタfpの示すストリーム入出力用ファイルに対してbufの指す記憶域を入出力用のバッファ領域として使用するように定義します。
このバッファ領域の使用方法としては、以下の三通りの方法があります。
入出力処理は行単位でバッファ領域を使用して行います。すなわち、入出力データは、改行文字が書かれた時、バッファ領域が一杯になった時、入力が要求された時にバッファ領域から取り出されることになります。
setvbuf関数は通常0を返しますが、typeあるいはsizeに不正な値が与えられた時、あるいはバッファ領域の使用方法等の要求が受け入れられなかった時には0以外の値を返します。
バッファ領域は、オープンされているストリーム入出力用ファイルがクローズされる前に解放してはいけません。また、setvbuf関数は、ストリーム入出力用ファイルがオープンされてから入出力用処理が行われるまでの間で使用してください。