도그소프트
[ C ]fopen함수와 fclose함수 본문
#include <stdio.h> // C++ 에서는 <cstdio>
FILE *fopen(const char *filename,const char *mode);
지정한 파일(filename)을 열고, FILE 객체를 가리키는 포인터를 반환한다.
mode 인자에 의해 입출력 작업이 가능한지가 결정된다.
r : 파일을 읽기 형식으로 연다(파일이 꼭 존재해야함)
w : 파일을 쓰기 형식으로 연다(파일이 존재하지 않아도 빈파일로 간주하여 새롭게 생성)
a : 파일을 덧붙이기 형식으로 연다(파일이 존재하지 않는다면 새롭게 생성)
r+ : 읽기 형식 + 쓰기(파일이 꼭 존재해야함)
w+ : 쓰기 형식 + 읽기(동일한 파일이 이미 존재한다면 그파일을 모두 지운 후 새롭게 생긴 빈파일로 간주하고 파일이 존재하지 않는다면 새롭게 생성)
a+ : 덧붙이기 형식 + 읽기(파일이 존재하지 않는다면 새롭게 생성, 모든 쓰기작업은 파일의 맨 끝에서 진행)
*예시*
#include <stdio.h>
#include <Windows.h>
int level = 1; //전역변수 레벨 선언 후 1로 초기화
int power = 1; //전역변수 공격력 선언 후 1로 초기화
int speed = 1; //전역변수 공격속도 선언 후 1로 초기화
void load() {
FILE *s1;
if ((s1 = fopen("세이브 파일1.txt", "r")) == NULL) {
printf_s("데이터를 불러오지 못했습니다 ! ! ! !");
} //만약 파일이 존재하지 않을 경우 불러오지 못함
fscanf(s1, "%d %d %d", &level, &power, &speed);
printf_s("데이터를 불러왔습니다 ! ! ! !\n");
fclose(s1);
}
void save() {
FILE *s1;
s1 = fopen("세이브 파일1.txt", "w");
fprintf(s1, "%d %d %d", level, power, speed);
fclose(s1);
printf_s("저장을 완료했습니다 ! ! ! !");
}
int main() {
int a;
printf_s("1.저장\n2.불러오기\n3.종료");
scanf_s("%d", &a);
switch (a) {
case 1: save(); break;
case 2: load(); break;
case 3: break;
default: printf_s("잘못된 선택입니다.");
}
}
*실행 결과*

