Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

도그소프트

[ C ]fopen함수와 fclose함수 본문

카테고리 없음

[ C ]fopen함수와 fclose함수

도그소프트 2017. 8. 3. 22:42
#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("잘못된 선택입니다.");
  }
}

*실행 결과*