Game !
C

[C] C 스타일 파일입출력2022. 11. 12. 20:04

 

C 스타일 : 

자료형 하나씩 저정해도 되지만 보통 구조체로 저장한다.

> 한 번에 데이터를 모아서 저장할 수 있어서

 

C 스타일 파일 입출력을 사용하려면 아래 헤더파일을 추가해야한다

<iostream> 

 

 

1. 파일에 쓰기

 

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
32
33
34
35
#include <iostream>
using namespace std;
 
#define MAX_NAME_LENGTH = 32;
 
struct SAVE_DATA
{
    char arr[MAX_NAME_LENGTH];
    
    int iHp; 
}
 
void SaveData()
{
    FILE* pWriteFile = nullptr;
    
    // 파일 열기
    // b : 바이너리
    fopen_s(&pWriteFile, "PlayerData.txt""wb");
 
    SAVE_DATA _save;
 
    // 1. char 배열 저장  
    strcpy_s(_save.arr, sizeof(_save.arr), "불멸의영웅탈론");
 
    // 2. 정수 저장 : 일반 원시 변수
    _save.iHp = 200;
 
    // 파일에 쓰기
    fwrite(&_save, sizeof(SAVE_DATA), 1, pWriteFile);
 
    // 파일 닫기
    fclose(pWriteFile);
    pWriteFile = nullptr;
}
cs

 

 

 

 

2. 파일 읽기

 

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
32
#include <iostream>
using namespace std;
 
#define MAX_NAME_LENGTH = 32;
 
struct SAVE_DATA
{
    char arr[MAX_NAME_LENGTH];
    
    int iHp; 
}
 
void LoadData()
{
    FILE* pReadFile = nullptr;
 
    // 파일 열기
    // b : 바이너리
    fopen_s(&pReadFile, "../Data/PlayerData.txt""rb");
 
    if (pReadFile != nullptr)
    {
        SAVE_DATA _save;
 
        // 파일 읽기 : 저장한 구조체와 동일한 자료형 사용해야함
        fread(&_save, sizeof(SAVE_DATA), 1, pReadFile);
 
        // 파일 닫기
        fclose(pReadFile);
        pReadFile = nullptr;
    }
}
cs