C_C++

(C언어) 구조체를 이진파일에 저장하고 읽어오기 fread fwrite

고니자니 2022. 11. 22. 21:58
반응형

#이진파일 #구조체 #저장 #읽기 #person #struct #fread #fwrite

 

 

구조체를 이진 파일에 저장하고 읽어오는 C언어 코드입니다.

#define _CRT_SECURE_NO_WARNINGS    // Visual Studio
#include <stdio.h>
#include <stdlib.h>
#define N	4

typedef struct {
	char name[10];
	int age;
} person;

int main()
{
	FILE* fp;

	person list[N] = {
		{ "홍길동", 20 },
		{ "이순신", 30 },
		{ "정재욱", 40 },
		{ "빌게이츠", 50}
	};

	fp = fopen("person.dat", "wb");

	if (fp == NULL)
	{
		printf("저장 오류\n.");
		exit(1);
	}

	fwrite(list, sizeof(person), N, fp);

	fclose(fp);
	printf("person.dat에 저장했습니다.\n\n");

	return 0;
}

 

저장된 파일을 메모장으로 불러 보겠습니다.

 

 

 

프로그램에서 저장된 이진 파일을 읽어 보겠습니다.

#define _CRT_SECURE_NO_WARNINGS       // Visual Studio
#include <stdio.h>
#include <stdlib.h>
#define N	4

typedef struct {
	char name[10];
	int age;
} person;

int main()
{
	FILE* fp;
	int i;
	person list[N];

	fp = fopen("person.dat", "rb");
	
	if (fp == NULL)
	{
		printf("파일이 없습니다 !\n");
		exit(1);
	}

	if(fread(list, sizeof(person), N, fp) != N)
	{
		printf("File read Error !\n");
		exit(1);
	}

	printf("이름      나이\n");
	for (i = 0; i < N; i++)
		printf("%-10s %d\n", list[i].name, list[i].age);

	fclose(fp);

	return 0;
}

 

 

 

반응형