Everything

setvbuf


ストリーム入出力用のバッファ領域をユーザプログラムの側で定義して設定します。

[指定形式]

#include <stdio.h>

long setvbuf(FILE *fp, char *buf, long type, size_t size);

[引数]

fp ファイルポインタ

buf バッファ領域へのポインタ

type バッファの管理方式

size バッファ領域の大きさ

[戻り値]

正常:0

異常:0以外

[備考]

setvbuf関数は、ファイルポインタfpの示すストリーム入出力用ファイルに対してbufの指す記憶域を入出力用のバッファ領域として使用するように定義します。

このバッファ領域の使用方法としては、以下の三通りの方法があります。

(a)

typeに_IOFBFを指定した時

入出力処理はすべてバッファ領域を使用して行います。

(b)

typeに_IOLBFを指定した時

入出力処理は行単位でバッファ領域を使用して行います。すなわち、入出力データは、改行文字が書かれた時、バッファ領域が一杯になった時、入力が要求された時にバッファ領域から取り出されることになります。

(c)

typeに_IONBFを指定した時

入出力処理はバッファ領域を使用せず行います。

setvbuf関数は通常0を返しますが、typeあるいはsizeに不正な値が与えられた時、あるいはバッファ領域の使用方法等の要求が受け入れられなかった時には0以外の値を返します。

バッファ領域は、オープンされているストリーム入出力用ファイルがクローズされる前に解放してはいけません。また、setvbuf関数は、ストリーム入出力用ファイルがオープンされてから入出力用処理が行われるまでの間で使用してください。