개발개발/c++
c++의 파일 입출력
유잉유잉유잉
2024. 12. 10. 23:50
728x90
c언어 스타일 파일 입출력
파일 포인터 변수 선언
FILE * file = nullptr;
파일을 만들거나 읽어와야할 때 사용
파일 생성 및 입력하기
fopen_s(&file, "fileName.txt", "at);
- 첫번째 인자 : 동적 할당한 메모리 주소 넘기기
- 두번째 인자 : 절대/상대 경로
- 세번째인자 - 모드1번
- r : 읽어오기
- w : 파일 만들기 ( 기존거 있으면 덮어쓰기 )
- a : append 모드. 없으면 새로 만듦. 있으면 기존 파일을 읽은 후 맨뒤에 추가
- 세번째 인자 - 모드2번
- t : 텍스트파일
- b : 바이너리파일
- r+ : 파일이 있으면 읽기/쓰기 둘 다 가능하게 열어줌. 파일이 없으면 에러
- g+ : 파일이 있으면 읽기/쓰기 둘 다 가능하게 열어줌. 파일이 없으면 만듦.
- a+ : 파일이 있으면 맨 뒤에서부터 읽고 쓰기 가능하도록 열어줌. 없으면 만듦.
FILE * file = nullptr;
fopen_s( &file, "testText.txt", at);
// 파일이 정상적으로 열렸다면
if( nullptr != file)
{
// 캐릭터 한글자 파일에 저장
fputc('a', file);
// 문자열을 파일에 저장
fputs("SSS\n", file);
// fprintf() : 파일 스트림에 포멧을 지정하여 저장
int num = 100;
fprintf( file, "num = %d", num);
// 파일은 사용 후 꼭 닫아주는 습관!
fclose(file);
}
빌드하면 프로젝트 폴더 내에 파일이 생성
메모장 내에 입력한 내용을 확인할 수 있음.
파일 읽어오기
FILE * file = nullptr;
fopen_s( &file, "TestFile.txt", "rt");
// if( nullptr != file )과 동일한 문장
if( file )
{
// fgetc : 문자(char) 하나 읽어오기
char txt = fgetc(file);
std::cout << txt << std::endl;
// fgets : 문자열 읽어오기. 개행까지 문자열 한줄을 읽어옴
char txt2 [128] = {};
fgets(txt2, 128, file);
std::cout << txt2 << std::endl;
// fscanf_s() : 파일 스트림에 포멧을 지정하여 읽어오는 함수
int num = 0;
fscanf_s( file, "num = %d", &num);
std::cout << num << std::endl;
fclose(file);
}
TestFile.txt의 내용이 위와같은 경우에서 위 코드를 실행할 경우
String\n 까지 읽어들어져서 String 문자열 이후 개행이 실행됨
728x90