C언어는 파일을 읽고 쓰는 기능도 강력하게 제공합니다.
파일 입출력은 프로그램이 외부와 데이터를 주고받는 가장 기본적인 수단 중 하나입니다.
이번 글에서는 파일을 여는 함수 fopen과 닫는 함수 fclose의 기본 사용법을 배워보겠습니다.
● fopen 함수: 파일 열기
fopen은 파일을 열 때 사용하는 함수입니다.
파일 이름과 모드를 전달하면 해당 파일을 읽거나 쓸 수 있게 됩니다.
FILE *fp;
fp = fopen("data.txt", "r");
위 코드는 data.txt 파일을 읽기 전용으로 엽니다.
fopen 함수는 파일 포인터를 반환하며, 실패 시 NULL을 반환합니다.
● 파일 열기 모드
- "r" : 읽기 전용 (파일이 있어야 함)
- "w" : 쓰기 전용 (기존 파일이 있으면 삭제됨)
- "a" : 추가 모드 (기존 파일 끝에 내용 추가)
- "r+" : 읽기/쓰기 (기존 파일 있어야 함)
- "w+" : 읽기/쓰기 (기존 파일 삭제)
● fclose 함수: 파일 닫기
파일 작업이 끝나면 반드시 fclose를 호출해 파일을 닫아야 합니다.
fclose(fp);
파일을 닫지 않으면 데이터가 완전히 저장되지 않거나, 시스템 자원이 낭비될 수 있습니다.
● fopen 사용 시 주의할 점
- fopen이 NULL을 반환하면 파일 열기에 실패한 것입니다.
- 파일 이름이나 경로가 정확한지 확인해야 합니다.
- 파일이 없는데 "r" 모드로 열면 실패합니다.
파일 입출력은 실제 프로그램에서 자주 사용됩니다.
파일이 성공적으로 열렸는지 꼭 확인하고, 작업이 끝난 후에는 파일을 닫는 습관을 들이세요.
● 실습 문제
문제 1
파일 "test.txt"를 쓰기 모드로 열고, 닫는 코드를 작성하세요.
문제 2
fopen으로 파일 열기에 실패했을 때 체크하는 코드를 작성하세요.
문제 3
파일을 닫지 않고 프로그램이 종료되면 어떤 문제가 생기나요?
문제 4
"a" 모드로 열면 어떤 동작이 일어나나요?
문제 5
다음 코드에서 잘못된 부분을 찾아 수정하세요.
FILE *fp = fopen("data.txt", "r");
fprintf(fp, "hello");
fclose(fp);
▶ 정답 확인하기
정답 1
FILE *fp = fopen("test.txt", "w");
fclose(fp);
정답 2
FILE *fp = fopen("file.txt", "r");
if (fp == NULL) {
printf("파일 열기 실패\n");
}
정답 3
데이터가 완전히 저장되지 않거나, 파일 손상 또는 메모리 누수가 발생할 수 있습니다.
정답 4
파일 끝에 데이터를 추가합니다. 기존 내용을 유지하면서 새로운 내용을 덧붙일 수 있습니다.
정답 5
"r" 모드는 읽기 전용입니다. 쓰기를 하려면 "w" 또는 "r+"로 열어야 합니다.
'프로그래밍언어 > C언어[초급]' 카테고리의 다른 글
[C언어][초급] Chapter62. 표준 헤더파일의 종류 – 자주 사용하는 C 표준 라이브러리 (0) | 2025.04.20 |
---|---|
[C언어][초급] Chapter61. 파일 입출력 – fprintf, fscanf로 파일에 데이터 쓰고 읽기 (1) | 2025.04.19 |
[C언어][초급] Chapter59. 구조체와 포인터 – 포인터로 구조체를 다루는 방법 (0) | 2025.04.19 |
[C언어][초급] Chapter58. 중첩 구조체 – 구조체 안에 또 다른 구조체 담기 (0) | 2025.04.19 |
[C언어][초급] Chapter57. 구조체 배열 – 여러 개의 구조체를 한 번에 관리하는 방법 (0) | 2025.04.19 |