C-standard-library-c-function-setvbuf
提供:Dev Guides
Cライブラリ関数-setvbuf()
説明
Cライブラリ関数 int setvbuf(FILE stream、char * buffer、int mode、size_t size)*は、ストリームのバッファリング方法を定義します。
宣言
次に、setvbuf()関数の宣言を示します。
int setvbuf(FILE *stream, char *buffer, int mode, size_t size)
パラメーター
- stream -これは、開いているストリームを識別するFILEオブジェクトへのポインタです。
- バッファ-これはユーザーが割り当てたバッファです。 NULLに設定すると、関数は指定されたサイズのバッファーを自動的に割り当てます。
- mode -ファイルのバッファリングのモードを指定します-
Sr.No. | Mode & Description |
---|---|
1 |
_IOFBF フルバッファリング-出力では、バッファがいっぱいになるとデータが書き込まれます。 入力時、入力操作が要求され、バッファが空の場合、バッファがいっぱいになります。 |
2 |
_IOLBF 行バッファリング-出力では、改行文字がストリームに挿入されたとき、またはバッファがいっぱいになったときにデータが書き込まれます。 入力では、入力操作が要求されてバッファーが空になると、バッファーは次の改行文字までいっぱいになります。 |
3 |
_IONBF バッファリングなし-バッファは使用されません。 各I/O操作はできるだけ早く書き込まれます。 バッファーとサイズのパラメーターは無視されます。 |
- サイズ-これはバイト単位のバッファサイズです
戻り値
この関数は成功するとゼロを返し、そうでなければゼロ以外の値を返します。
例
次の例は、setvbuf()関数の使用法を示しています。
#include <stdio.h>
int main () {
char buff[1024];
memset( buff, '\0', sizeof( buff ));
fprintf(stdout, "Going to set full buffering on\n");
setvbuf(stdout, buff, _IOFBF, 1024);
fprintf(stdout, "This is finddevguides.com\n");
fprintf(stdout, "This output will go into buff\n");
fflush( stdout );
fprintf(stdout, "and this will appear when programm\n");
fprintf(stdout, "will come after sleeping 5 seconds\n");
sleep(5);
return(0);
}
上記のプログラムをコンパイルして実行し、次の結果を生成しましょう。 ここで、プログラムはfflush()の最初の呼び出しに直面するまで出力を buff にバッファリングし続けます。その後、再び出力のバッファリングを開始し、最終的に5秒間スリープします。 プログラムが出てくる前に、残りの出力をSTDOUTに送ります。
Going to set full buffering on
This is finddevguides.com
This output will go into buff
and this will appear when programm
will come after sleeping 5 seconds