バイナリファイル入力

目次

fread()

バイナリファイルの入力にはfread()関数を用います。

fread(【格納する配列】,【要素一つのサイズ】, 【要素数】,  【ファイルポインタ】);

と記述することで、ファイルポインタが示すファイルからデータを読み込みます。

また、書き込みに成功した要素数を返すので、それをエラー処理に用います。

サンプルコード

変数に読み込む場合のサンプルです。

FILE* fp;
int errCheck;
int inputData;

fopen_s(fp, "bFile.dat", "wb");
if(fp == NULL){
  printf("File Can't Open\n");
  exit(1);
}

errCheck = fread(&a, sizeof(a), 1, fp);
if(errCheck < 1){
  printf("Read Error\n");
  exit(1);
}

printf("%d\n", inputData);

fclose(fp);

ファイル名の拡張子「.dat」とは、あまり見かけませんが、何かしらのデータが書かれているファイルであることを示します。
要素一つのサイズはsizeof()で値を求めています。
書き出しているデータ数が1なので戻り値が1より小さければエラーとしています。

次に配列に読み込む場合のサンプルです。

FILE* fp;
int errCheck;
char inputData[5];
int inputDataSize = sizeof(inputData)/sizeof(inputData[0]);

fopen_s(fp, "bFile.dat", "wb");
if(fp == NULL){
  printf("File Can't Open\n");
  exit(1);
}

errCheck = fread(inputData, sizeof(inputData[0]), inputDataSize, fp);
if(errCheck < inputDataSize){
  printf("Read Error\n");
  exit(1);
}

printf("%s\n", inputData);

fclose(fp);

ファイルから4文字読み込み、文字列として表示しています。
配列名はアドレスを示すので、配列の場合は第一引数に「&」は必要ありません。
第二引数は要素一つ分のサイズなので、代表して0番目の要素の大きさを見ています。
データの個数としてoutputDataSizeを定義していますが、これは要素一つのサイズで全体のサイズを割ったものになります。

「バイナリファイル入力」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です