C++ 개념 정리

31. 파일 입출력

CE : 하랑 2026. 3. 2. 11:39

바이트나 블록 단위로 입출력
데이터 종류에 따라 텍스트(문자) / 바이너리 (문자, 이미지 등 ) 파일로 나뉜다.

 

텍스트 파일
- 글자 혹은 문자로만 구성되는 문서 파일

바이너리 파일
- 사진, 이미지, 오디오, 그래픽 이미지, 컴파일된 코드 등 문자로 표현되지 않는 바이너리 정보들

 

// w 쓰겠다.
// r 읽겠다.
// +
// t 텍스트
// b 바이너리

 

1. fopen_s() 

- 파일을 열거나 만드는 함수입니다.
- 따로 수정하지 않는다면 없으면 만들어 버립니다.

fopen_s(&FileHandle, Path.c_str(), Mode.c_str());
//fopen_s(&FileHandle, "aaaa.txt", "wt");

 

 

2. fwrite()

- void const* _Buffer, => 내가 저장하려고 하는 주소
- size_t      _ElementSize, => 그 주소부터 몇바이트를 저장할것인지 자료의 크기
- size_t      _ElementCount, => 그걸 몇번 저장할건지 3 Ex) 4 3 int를 한파일에 3번 저장해준다.
- FILE* _Stream 파일의 핸들.

 

std::vector<char> Data = {'d','1','2'};

std::string Data2 = "안녕하세요오ㅓㅇ우우ㅜ";
fwrite(&Data2[0], Data2.size(), 1, FileHandle);

fclose(FileHandle);

 

 

3. fread() -> 파일에 쓴다. 어떤 데이터를

 

//void const* _Buffer, => 내가 저장하려고 하는 주소
//size_t      _ElementCount, => 그걸 몇번 저장할건지 3 Ex) 4 3 int를 한파일에 3번 저장해준다.
//FILE* _Stream 파일의 핸들.
// 읽을려는 사이즈가 얼마냐를 적을수 있다.

 

EIOOpenMode OpenMode = EIOOpenMode::None;
FILE* FileHandle = nullptr;
char Arr[100] = {};
void Load(EIOOpenMode _OpenType, EIODataType _DataType)
{
	std::string Path = GetPath();
	std::string Mode;

	switch (_OpenType)
	{

	case EIOOpenMode::Write:
		OpenMode = EIOOpenMode::Write;
		Mode += "w";

		break;
	case EIOOpenMode::Read:
		OpenMode = EIOOpenMode::Read;
		Mode += "r";
		break;
	default:
		break;
	}

	switch (_DataType)
	{
	case EIODataType::Binary:
		Mode += "b";
		break;
	case EIODataType::Text:
		Mode += "t";
		break;
	default:
		break;
	}
	//std::string a=Path.c_str();
	fopen_s(&FileHandle, Path.c_str(), Mode.c_str());

	if (FileHandle == nullptr)
	{
		return;
	
	}

	fread(&Arr[0], 100, 1, FileHandle);
}

 

개발 순서

(1) 파일 오픈

(2) 작업

(3) 파일 Close

'C++ 개념 정리' 카테고리의 다른 글

33. std::function  (0) 2026.03.02
32. memcpy  (0) 2026.03.02
30. filesystem  (0) 2026.03.02
29. namespace  (0) 2026.03.02
27. static VS extern  (0) 2026.03.01