개발 Study

#20 스트림 개방 및 입출력

HYuk 2021. 4. 19. 20:25
728x90

#스트림개방

스트림 개방을 통해 stdin, stdout 외에

파일로 입출력을 해보려고 한다.

 

파일로 입출력을 하기 위해서는 스트림 개방을 해야한다.

개방은 fopen_s(1. 스트림 개방 후 저장 할 포인터변수 주소, 2. 경로(파일 확장자 포함), 3. 스트림 형태(읽기/쓰기));

로 할 수 있다.

 

개방을 한 후에는 다시 닫아 줘야하는데,

fclose(포인터변수);

로 닫을 수 있다.

 

fclose를 하지 않는다면, 해당 파일에 예를들어 1234를 쓰기했는데, 닫지않고 다시 사용 했을 때, 1234 뒤에 이어서 써진다.

 

2. 경로

경로는 절대경로와 상대경로가 있는데,

절대경로

절대적인 위치로, 상세하게 적어줘야한다.

c:/Test123/123/Test.txt

위와 같이 정확한 위치를 상세하게 적고, 그 위치가 조금이라도 뒤틀어지면 에러가 발생한다.

상대경로

해당 프로그램이 기준이 되어, 거기서부터 위치를 찾아가게 된다.

../Test/Test.txt

 

3. 스트림 형태

여기서 binary 모드는 배열이나 구조체처럼, 연속된 메모리를 사용할 때, 한번에 입출력 할 수 있으며

컴퓨터 친화적인 언어이기 때문에 속도적인 측면에서 좋고, Text로 표현할 수 없는 사진, 영상, 음악 등을 읽고 쓸 수 있다.

#include <iostream>

using namespace std;

void main()
{
	char chName[16] = "";
	char chAge[4] = "";
	char chTel[16] = "";
	FILE* fp = nullptr;
    
	errno_t err = fopen_s(&fp, "../Data/Test.txt", "wt");

	if (0 == err)
	{
		cout << "파일 개방 성공" << endl;
		cout << "이름: ";
		cin >> chName;
		cout << "나이: ";
		cin >> chAge;
		cout << "전화번호: ";
		cin >> chTel;

		fputs("이름: ", fp);
		fputs(chName, fp);
		fputc('\n', fp);
		fputs("나이: ", fp);
		fputs(chAge, fp);
		fputc('\n', fp);
		fputs("전화번호: ", fp);
		fputs(chTel, fp);
		fclose(fp);
	}
	else
		cout << "파일 개방 실패" << endl;
}

해당 소스코드가 있는 곳에서 Data라는 폴더에 Test.txt를 만들어서 안에 이름/나이/전화번호를 입력받아서

txt파일을 생성시키는 코드이다.

 

 

728x90