fread
From cppreference.com
| ヘッダー <stdio.h> で定義 |
||
| (C99まで) | ||
| (C99以降) | ||
指定された入力ストリーム stream から、count 個までのオブジェクトを配列 buffer へ読み込みます。これは、size 回 fgetc を呼び出すのと同等であり、取得した結果を順に buffer の対応する位置に格納します。buffer は unsigned char の配列として再解釈されます。ストリームのファイル位置指示子は、読み込まれた文字数だけ進められます。
エラーが発生した場合、ストリームのファイル位置指示子の結果の値は未定義となります。部分的な要素が読み込まれた場合、その値も未定義となります。
目次 |
[編集] パラメータ
| buffer | - | 読み込まれたオブジェクトが格納される配列へのポインタ |
| size | - | 各オブジェクトのバイト単位でのサイズ |
| count | - | 読み込まれるオブジェクトの数 |
| stream | - | 読み込み元のストリーム |
[編集] 戻り値
正常に読み込まれたオブジェクトの数。エラーまたはファイルの終端条件が発生した場合は、count より少なくなることがあります。
size または count がゼロの場合、fread はゼロを返し、他のアクションは実行しません。
fread は、ファイルの終端とエラーを区別しません。呼び出し元は、どちらが発生したかを判断するために feof および ferror を使用する必要があります。
[編集] 例
このコードを実行
#include <stdio.h> enum { SIZE = 5 }; int main(void) { const double a[SIZE] = {1.0, 2.0, 3.0, 4.0, 5.0}; printf("Array has size %ld bytes, element size: %ld\n", sizeof a, sizeof *a); FILE *fp = fopen("test.bin", "wb"); // must use binary mode fwrite(a, sizeof *a, SIZE, fp); // writes an array of doubles fclose(fp); double b[SIZE]; fp = fopen("test.bin","rb"); const size_t ret_code = fread(b, sizeof b[0], SIZE, fp); // reads an array of doubles if (ret_code == SIZE) { printf("Array at %p read successfully, contents:\n", (void*)&a); for (int n = 0; n != SIZE; ++n) printf("%f ", b[n]); putchar('\n'); } else // error handling { if (feof(fp)) printf("Error reading test.bin: unexpected end of file\n"); else if (ferror(fp)) perror("Error reading test.bin"); } fclose(fp); }
実行結果の例
Array has size 40 bytes, element size: 8 Array at 0x1337f00d6960 read successfully, contents: 1.000000 2.000000 3.000000 4.000000 5.000000
[編集] 参考文献
- C23標準 (ISO/IEC 9899:2024)
- 7.21.8.1 The fread function (p: TBD)
- C17標準 (ISO/IEC 9899:2018)
- 7.21.8.1 The fread function (p: 243-244)
- C11標準 (ISO/IEC 9899:2011)
- 7.21.8.1 The fread function (p: 335)
- C99標準 (ISO/IEC 9899:1999)
- 7.19.8.1 The fread function (p: 301)
- C89/C90標準 (ISO/IEC 9899:1990)
- 4.9.8.1 The fread function
[編集] 関連項目
| (C11)(C11)(C11) |
stdin、ファイルストリーム、またはバッファから書式化された入力を読み込む (関数) |
| ファイルストリームから文字列を取得する (関数) | |
| ファイルに書き込む (関数) | |
| C++ ドキュメント fread
| |