C/C

파일 입출력

HicKee 2022. 10. 11. 23:25

헤더파일

더보기

def.h

#ifndef __DEF_H__ // 정의되지 않으면 if not define
#define __DEF_H__

#define _CRT_SECURE_NO_WARNINGS

#endif

student.h

//#pragma once
#ifndef  __STUDENT_H__
#define  __STUDENT_H__

typedef struct _STUDENT {
	//_STUDENT 와 ST 같으면 안된다.

	char name[10]; //이름
	int kor;
	int eng;
	int math;
	int hap;
	double avg;
	char grade;

} ST;

ST st; //구조체 변수 선언 (전역 변수)

extern void init_student(); //함수 프로토 타입
void show_student(ST st); //extern 생략 가능

#endif

소스 파일

더보기

student.c

#include "def.h"
#include <string.h>
#include <stdio.h>
#include "student.h"
//함수
//학생 초기 정보
void init_student() {

	//문자열 복사
	strcpy(st.name, "이길동");
	st.kor = 100;
	st.eng = 100;
	st.math = 100;
	st.hap = st.kor + st.eng + st.math;
	st.avg = st.hap / 3;

	printf("=====================\n");
	printf("학생 기본 정보 목록\n");
	printf("=====================\n");
	printf("학생정보 :%s\n",st.name);
	printf("국어점수 :%d\n", st.kor);
	printf("영어점수 :%d\n", st.eng);
	printf("수학점수 :%d\n", st.math);
	printf("총합 :%d\n", st.hap);
	printf("평균 :%.2f\n", st.avg);
}

void show_student(ST st) {

	printf("=====================\n");
	printf("추가 학생 정보 목록\n");
	printf("=====================\n");
	printf("학생정보 :%s\n", st.name);
	printf("국어점수 :%d\n", st.kor);
	printf("영어점수 :%d\n", st.eng);
	printf("수학점수 :%d\n", st.math);
	printf("총합 :%d\n", st.hap);
	printf("평균 :%.2f\n", st.avg);

}

#include "def.h" //def.h 는 보통 설정 정보를 넣는 다. 
//def.h 가장 위쪽으로
//" " 의미는 st_file_01.c 와 같은 폴더내에 위치 한다라는 뜻이다.
#include <stdio.h> //내부적으로 경로가 연결 (패스가 걸려있다.)
#include "student.h"

int main() {

	ST st1 = { "홍길동",100,90,80,0,0.0,'A' }; //이러한 사용방법도 존재한다.
	init_student();
	show_student(st1);

	//파일 쓰기

	FILE* fp = NULL; //파일 포인터
	// 몇가지 파일제어 중에서 고수준 (사용자와 가까움)
	fp = fopen("D:/st_bin.bin", "wb"); //경로설정이 없다면 내 프로젝트 폴더( 소스파일과 같은 위치)에 파일이 생성된다.
	if (fp==NULL) {
		printf("파일을 생성할 수 없습니다.");
		return -1;
	}
	fwrite(&st1, sizeof(st1), 1, fp);
	//fwrite(&st1, sizeof(st1), 1, fp); fwrite는 만약 10번을 쓰면 10번째 정보만 파일로 쓴다.
	fclose(fp);

	//파일 읽어오기

	FILE* fpr = fopen("D:/st_bin.bin", "rb");
	if (fp == NULL) {
		printf("파일을 읽어올 수 없습니다.");
		return -1;
	}
	ST st_t = { 0, };
	fread(&st_t, sizeof(st_t), 1, fpr);
	printf("=====================\n");
	printf("읽어온 파일 정보\n");
	printf("=====================\n");
	printf("학생정보 :%s\n", st_t.name);
	printf("국어점수 :%d\n", st_t.kor);
	printf("영어점수 :%d\n", st_t.eng);
	printf("수학점수 :%d\n", st_t.math);
	printf("총합 :%d\n", st_t.hap);
	printf("평균 :%.2f\n", st_t.avg);
	
	fclose(fpr);
}

'C > C' 카테고리의 다른 글

fopen(), fclose() 파일입출력  (0) 2022.10.15
time(), localtime() 시간  (0) 2022.10.13
모듈화 2 - 구조체  (0) 2022.10.08
모듈화 1  (0) 2022.10.08
구조체 1  (0) 2022.10.07