Latest web development tutorials

Cライブラリ関数 - はsetvbuf()

C標準ライブラリ - に<stdio.h> C標準ライブラリ-に<stdio.h>

説明

Cライブラリ関数ははsetvbuf(ファイル*ストリーム、char型int型 *バッファ、int型のモード、size_tのサイズ)どのように流れストリームバッファを定義します。

声明

ここでは関数はsetvbuf()文です。

int setvbuf(FILE *stream, char *buffer, int mode, size_t size)

パラメータ

  • ストリーム-これは、オブジェクト、オブジェクト識別子ファイルオープンストリームへのポインタをファイルへのポインタです。
  • バッファ-ユーザバッファに割り当てられています。NULLに設定されている場合、この関数は自動的に指定されたバッファサイズを割り当てます。
  • モード-これはファイルバッファモードを指定します。
模式描述
_IOFBF全缓冲:对于输出,数据在缓冲填满时被一次性写入。对于输入,缓冲会在请求输入且缓冲为空时被填充。
_IOLBF行缓冲:对于输出,数据在遇到换行符或者在缓冲填满时被写入,具体视情况而定。对于输入,缓冲会在请求输入且缓冲为空时被填充,直到遇到下一个换行符。
_IONBF无缓冲:不使用缓冲。每个 I/O 操作都被即时写入。buffer 和 size 参数被忽略。
  • サイズ-これはバイト単位のバッファ・サイズです。

戻り値

成功した場合、関数は、それ以外の場合はゼロ以外の値を返し、0を返します。

次の例では、はsetvbuf()関数が使用されている示しています。

#include <stdio.h>

int main()
{

   char buff[1024];

   memset( buff, '\0', sizeof( buff ));

   fprintf(stdout, "启用全缓冲\n");
   setvbuf(stdout, buff, _IOFBF, 1024);

   fprintf(stdout, "这里是 w3cschool.cc\n");
   fprintf(stdout, "该输出将保存到 buff\n");
   fflush( stdout );

   fprintf(stdout, "这将在编程时出现\n");
   fprintf(stdout, "最后休眠五秒钟\n");

   sleep(5);

   return(0);
}

それでは、次のような結果が生成されます上記のプログラムを、コンパイルして実行してみましょう。 ここでは、睡眠の最後の5秒のバッファ出力を開始する前に)(のfflushする最初の呼び出しまで、バフする出力バッファを保存するためのプログラム。 それはSTDOUTに残りの出力を送信するために、プログラムの終了前になります。

启用全缓冲
这里是 w3cschool.cc
该输出将保存到 buff
这将在编程时出现
最后休眠五秒钟

C標準ライブラリ - に<stdio.h> C標準ライブラリ-に<stdio.h>