fread()

fread()は、ストリームからバイナリデータをプログラムに読み込みます。


  #include <stdio.h>
  size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
  

ptrは読み込んだデータを保存するためのバッファのポインタ、sizeは読み込むデータ1個の長さ、 nmembは読み込むデータ数、streamは読み込むストリームのポインタです。streamはには一般的には、fopen()が返した値を指定します。

fread()は、読み込んだデータ数を返します。読み込んだデータ数がnmembより少ない時には、実際に読み込んだデータ数が、 エラーが発生したときには0が返されます。

次の例は、fwrite()とfread()を使ってファイルにアクセスするプログラムの例です。


    #include <stdio.h>
    #ifdef _MSC_VER
    #pragma warning(disable :4996)
    #endif
    
    #define INFNAME "./test.dat"
    #define OUTFNAME "./test.out"
    #define DATA_LEN 6
    
    int main(int argc, char* argv[])
    {
      FILE* stream;
      char buff[256];
      size_t n;
    
      if ((stream = fopen(INFNAME, "r")) == NULL)
      {
        printf("入力ファイルを開くことができません.\n");
        return;
      }
    
      // 1バイトのデータを6個読み込む
      n = fread(buff, sizeof(char), (size_t)DATA_LEN, stream);
      if (n != 6)
      {
        printf("正しく読み出せませんでした.\n");
        fclose(stream);
        return;
      }
      else
        buff[n] = 0;
      printf("データ=%s\n", buff);
      fclose(stream);
    
      if ((stream = fopen(OUTFNAME, "w")) == NULL)
      {
        printf("出力ファイルを開くことができません.\n");
        return;
      }
    
      // ストリームにデータを書き込む
      if (fwrite(buff, sizeof(char), (size_t)DATA_LEN, stream) != 6)
      {
        printf("すべてのデータを書き込めませんでした.\n");
      }
      fclose(stream);
    
      return 0;
    }
  

関連項目

fopen()

fwrite()



C目次 inserted by FC2 system