Skip to content

Latest commit

 

History

History
79 lines (62 loc) · 2.24 KB

File metadata and controls

79 lines (62 loc) · 2.24 KB

fread

  • cstdio[meta header]
  • std[meta namespace]
  • function[meta id-type]
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;
}
  • std::fread[color ff0000]
  • std::fopen[link /reference/cstdio/fopen.md]
  • std::fclose[link /reference/cstdio/fclose.md]
  • std::perror[link /reference/cstdio/perror.md.nolink]
  • std::printf[link /reference/cstdio/printf.md]

ファイル内容(sample.txt)

Hello, World!

出力例

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

処理系

参照