본문 바로가기
프로그래밍언어/C언어[초급]

[C언어][초급] Chapter60. 파일 입출력 – fopen, fclose로 파일 다루기

by about_IT 2025. 4. 19.

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+"로 열어야 합니다.