개발 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