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
処理系
- Clang: ??
- GCC: ??
- Visual C++: ??