C-standard-library-c-function-setvbuf
提供:Dev Guides
Cライブラリ関数-setvbuf()
説明
Cライブラリ関数 int setvbuf(FILE stream、char * buffer、int mode、size_t size)*は、ストリームのバッファリング方法を定義します。
宣言
次に、setvbuf()関数の宣言を示します。
パラメーター
- stream -これは、開いているストリームを識別するFILEオブジェクトへのポインタです。
- バッファ-これはユーザーが割り当てたバッファです。 NULLに設定すると、関数は指定されたサイズのバッファーを自動的に割り当てます。
- mode -ファイルのバッファリングのモードを指定します-
Sr.No. | Mode & Description |
---|---|
1 |
_IOFBF フルバッファリング-出力では、バッファがいっぱいになるとデータが書き込まれます。 入力時、入力操作が要求され、バッファが空の場合、バッファがいっぱいになります。 |
2 |
_IOLBF 行バッファリング-出力では、改行文字がストリームに挿入されたとき、またはバッファがいっぱいになったときにデータが書き込まれます。 入力では、入力操作が要求されてバッファーが空になると、バッファーは次の改行文字までいっぱいになります。 |
3 |
_IONBF バッファリングなし-バッファは使用されません。 各I/O操作はできるだけ早く書き込まれます。 バッファーとサイズのパラメーターは無視されます。 |
- サイズ-これはバイト単位のバッファサイズです
戻り値
この関数は成功するとゼロを返し、そうでなければゼロ以外の値を返します。
例
次の例は、setvbuf()関数の使用法を示しています。
上記のプログラムをコンパイルして実行し、次の結果を生成しましょう。 ここで、プログラムはfflush()の最初の呼び出しに直面するまで出力を buff にバッファリングし続けます。その後、再び出力のバッファリングを開始し、最終的に5秒間スリープします。 プログラムが出てくる前に、残りの出力をSTDOUTに送ります。