最終更新日時(UTC):
が更新

履歴 編集

function
<cstdio>

std::fread

namespace std {
  size_t fread(void *buffer, size_t size, size_t count, FILE *stream);
}

概要

ファイルからcount文字のsizeバイトのデータを読み込む。

ファイル内の位置は、読み取られたバイトだけ進む。

要件

  • bufferは有効なポインタであること。
  • streamは有効なファイルストリームであること。
  • bufferが指すメモリ領域とstreamが指すファイルストリームの内部バッファが重複していないこと。

戻り値

正常に読み込むことのできた項目の数を返す。

sizeまたはcountのいずれかが0だった場合、必ず0を返し、bufferは変更されない。

効果

streamからcount個のsizeバイトのデータを読み込む。

読み込んだデータは、bufferが指すメモリの先頭から順に格納される。

読み取りエラーが生じなければ、読み込むデータの大きさはcount * sizeバイトである。

#include <cstdio>

int main() {
  std::FILE *file = std::fopen("sample.txt", "r");
  if (!file) {
    std::perror("ファイルを開けませんでした");
    return 1;
  }

  char buffer[100];
  /*
  厳密には、sizeof(char)は1バイトであることが保証されているため、
  sizeof(buffer) / sizeof(char)は、bufferの要素数と等しくなる。
  */
  std::size_t count = std::fread(buffer, sizeof(char), sizeof(buffer) / sizeof(char), file);
  std::printf("読み込んだデータの長さ: %zu\n", count);

  std::fclose(file);
  return 0;
}

ファイル内容(sample.txt)

Hello, World!

出力例

読み込んだデータの長さ: 14

処理系

参照