名前空間
変種
操作

fread

提供: cppreference.com
< c‎ | io
 
 
ファイル入出力
関数
ファイルアクセス
直接入出力
fread
書式なし入出力
(C11以前)(C11およびそれ以降)
(C95)(C95)
(C95)
(C95)(C95)
(C95)
(C95)
書式付き入力
書式付き出力
ファイル位置操作
エラー処理
ファイルに対する操作
 
ヘッダ <stdio.h> で定義
size_t fread( void          *buffer, size_t size, size_t count,
              FILE          *stream );
(C99以前)
size_t fread( void *restrict buffer, size_t size, size_t count,
              FILE *restrict stream );
(C99およびそれ以降)

各オブジェクトに対して fgetcsize 回呼び、その結果を unsigned char の配列として再解釈された buffer の連続する位置に取得順に格納したかのように、指定された入力ストリーム stream から配列 buffer に最大 count 個のオブジェクトを読み込みます。 ストリームのファイル位置指示子は、読み込んだ文字数だけ進められます。

エラーが発生した場合、ストリームのファイル位置指示子の結果の値は不定になります。 要素が部分的に読み込まれた場合、その値は不定になります。

目次

[編集] 引数

buffer - 読み込んだオブジェクトを格納する配列を指すポインタ
size - バイト単位の各オブジェクトのサイズ
count - 読み込むオブジェクトの数
stream - 読み込むストリーム

[編集] 戻り値

読み込みに成功したオブジェクトの数。 エラーまたはファイル終端の状況が発生した場合は count より少なくなることがあります。

size または count がゼロの場合、 fread はゼロを返し、それ以外何の動作も行いません。

fread はファイル終端とエラーを区別しません。 呼び出し元はどちらが発生したかを調べるためには feof および ferror を使用しなければなりません。

[編集]

#include <stdio.h>
 
enum { SIZE = 5 };
int main(void)
{
    double a[SIZE] = {1.,2.,3.,4.,5.};
    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");
    size_t ret_code = fread(b, sizeof *b, SIZE, fp); // reads an array of doubles
    if(ret_code == SIZE) {
        puts("Array read successfully, contents: ");
        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 read successfully, contents: 
1.000000 2.000000 3.000000 4.000000 5.000000

[編集] 参考文献

  • C11 standard (ISO/IEC 9899:2011):
  • 7.21.8.1 The fread function (p: 335)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.19.8.1 The fread function (p: 301)
  • C89/C90 standard (ISO/IEC 9899:1990):
  • 4.9.8.1 The fread function

[編集] 関連項目

stdin、ファイルストリームまたはバッファから書式付き入力を読み取ります
(関数) [edit]
ファイルストリームから文字列を取得します
(関数) [edit]
ファイルに書き込みます
(関数) [edit]