
읽기/쓰기를 위해 파일을 만들었다.
출력은 fstream, 입력은 ostream 이 있다.
#include <fstream>
#include <ostream>
//파일 여는 두 가지 방법
ifstream Load("./Save.txt"); // 선언과 동시에 초기화
Load.close();
Load.open("./Save.txt"); // 선언 후 초기화
int input;
for (int i = 0; i < 3; i++)
{
Load >> input;
cout << input << endl;
}
Load.close();
save.txt 에 아무 내용이 없는 상태로 시작한다.
바이너리화해서 저장하는 방법이랑 그냥 저장하는 방법이 있는데, 읽는 방식과 쓰는 방식을 통일하지 않으면 데이터 크기 등에서 오류가 발생한다.
ofstream Save("./Save.txt", ios::trunc);
// ios::trunc = 기존 내용을(있으면) 삭제한다.
Save << 1 << ' ' << 2 << ' ' << 3 << ' ';
Save.close();
Save.open("./Save.txt", ios::app); //ios::app = 기존 내용에 덧붙임
Save << 1 << ' ' << 2 << ' ' << 3;
Save.close();

1 2 3 을 저장하고
그 후 파일 끝에1 2 3을 저장했다.
ofstream Save("./Save.txt", ios::binary | ios::trunc);
int i[3] = { 1, 2, 3 };
for (int j = 0; j < 3; j++)
{
Save.write((const char*)&i[j], sizeof(int));
}
Save.close();

바이너리화 돼서 눈으로는 알아볼 수 없게 저장됐다.
ifstream Load("./Save.txt", ios::binary);
int i;
for (int j = 0; j < 3; j++)
{
Load.read((char*)&i, sizeof(int));
cout << i << ' ' << "\n\n\n";
}
Load.close();

fopen_s(개방할 스트림을 저장할 FILE 구조체 주소, 파일의 경로(파일의 이름까지의 경로), 입출력 모드 옵션)
errno_t fopen_s(FILE* _Stream, char const _FileName,char const* _Mode)
개방 성공 시 0 리턴, 실패 시 음수 리턴
참고로 주소쓸때 \ 쓰면 걍 문자 붙이는걸로 간주되고 \\로 써야 경로로 들어가진다.
fseek : 파일 커서의 위치를 이동시키는 함수
ftell : 현재 파일 커서의 위치를 알려주는 함수
fwrite(저장할 데이터의 첫번째 주소, 데이터의 크기, 개수, 개방한 스트림)
fread(저장할 데이터의 첫번째 주소, 데이터의 크기, 개수, 개방한 스트림)?
fclose(포인터)
errno_t
feof : 커서가 eof에 도달했는지 검사하는 함수, 파일에 끝에 도달할 경우 0이 아닌 값을 반환
r : 읽기 가능 (파일 없으면 에러)
w : 쓰기 가능
a : 파일 끝에 덧붙여서 쓰기 가능
r+ : 읽기/쓰기 가능 (파일 없으면 에러)
w+ : 읽기/쓰기 가능
a+ : 읽기/덧붙여 쓰기 가능
wt : write text 텍스트 형태
wb : 바이너리화 파일
rt : 읽기 모드
rb : 바이너리화 읽기 모드
대충 예제 만들었음
#include "pch.h"
int main()
{
char szIP[64];
cin >> szIP;
FILE* pload;
//문자열 입력받아서 저장하기
fopen_s(&pload, "..\\Data\\IPsetting.txt", "w");
fwrite(szIP, sizeof(char)*strlen(szIP), 1, pload);
fclose(pload);
memset(szIP, '\0', sizeof(szIP));
//텍스트 파일의 문자 전부 읽기
fopen_s(&pload, "..\\Data\\IPsetting.txt", "r");
while (!feof(pload))
{
fread(szIP, sizeof(char), 1, pload);
cout << szIP;
memset(szIP, 0, sizeof(char) * strlen(szIP));
}
fclose(pload);
}