最終更新日時:
が更新

履歴 編集

function
<cstdio>

std::setvbuf

namespace std {
  int setvbuf(FILE* stream, char* buf, int mode, size_t size);
}

概要

バッファリングの方式を指定して、ファイルストリームが使用する入出力バッファを設定する。

modeには以下のいずれかを指定する。

説明
_IOFBF 完全バッファリング。バッファが満たされたときに入出力を行う
_IOLBF 行バッファリング。改行文字が書き込まれたときに入出力を行う
_IONBF バッファリングを行わない

bufがヌルポインタでない場合、その領域がsizeバイトのバッファとして使用される。ヌルポインタの場合は、処理系がバッファを確保する。

戻り値

成功した場合は0を、modeが不正な値であるなどして失敗した場合は0以外を返す。

備考

  • この関数は、ストリームを開いた後、入出力操作を行う前に呼び出さなければならない
  • bufとして渡す配列は、ストリームを閉じるまで生存していなければならない

#include <cstdio>

int main()
{
  char buffer[BUFSIZ];

  std::FILE* fp = std::fopen("test.txt", "w");

  // 行バッファリングを指定する
  int result = std::setvbuf(fp, buffer, _IOLBF, sizeof(buffer));
  std::printf("%d\n", result);

  std::fputs("Hello\n", fp);
  std::fclose(fp);
}

出力

0

関連項目