c言語でバイナリファイルから構造体を読み込む

はじめに

ファイルから構造体を読み込むプログラムを作成する。

目標

以下のようにstruct_read.cに構造体を定義。

/* struct_read.c */
#include <stdio.h>

struct data{
	char	first_name[10];	
	int 	age;			
	int	height;
};

以下のtanakaさんのデータtanaka.datを読み込み、ターミナルに出力することを目標とする。

/* tanaka.dat */
74 61 72 6F 00 00 00 00 00 00
20 00 00 00 3B 00 00 00

Step1:ファイルを読み込む

以下のようにstruct_read.cを作成。

/* struct_read.c */
#include <stdio.h>

struct data{
	char	first_name[10];	
	int 	age;	
	int	height;
};

int main(void){
	struct data tanaka;
	FILE *fp;

	fp = fopen("tanaka.dat", "rb");				//r:読み込み、b:バイナリモード
	fread(&tanaka, sizeof(tanaka), 1, fp);		//1:読み込みデータ数
	printf("%s\n", tanaka.first_name);
	printf("%d\n", tanaka.age);
	printf("%d\n", tanaka.height);

	fclose(fp);
	return 1;
}

コンパイルして、実行した結果は

taro
32
59

となり、無事に読み込めた。