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

[C언어][초급] Chapter61. 파일 입출력 – fprintf, fscanf로 파일에 데이터 쓰고 읽기

by about_IT 2025. 4. 19.

이전 글에서 fopen과 fclose로 파일을 열고 닫는 방법을 배웠다면,
이번에는 실제로 파일에 데이터를 쓰기읽기를 다루는 함수, fprintf와 fscanf를 소개합니다.

이 함수들은 화면에 출력하는 printf와 scanf와 거의 비슷하지만,
대상이 화면이 아니라 파일이라는 점만 다릅니다.


● fprintf: 파일에 출력하기

FILE *fp = fopen("data.txt", "w");
fprintf(fp, "이름: %s\n나이: %d", "민수", 20);
fclose(fp);

화면에 출력하듯이, fprintf를 사용하면 파일에 형식 있는 문자열을 저장할 수 있습니다.


● fscanf: 파일에서 입력받기

FILE *fp = fopen("data.txt", "r");
char name[20];
int age;
fscanf(fp, "이름: %s\n나이: %d", name, &age);
fclose(fp);

파일에서 형식에 맞춰 데이터를 읽을 수 있습니다.
형식이 잘 맞지 않으면 오류가 날 수 있으니 주의하세요.


● fprintf와 fscanf 사용 시 주의할 점

  • 서식 문자열은 정확히 맞춰야 합니다.
  • 공백이나 개행 문자까지 고려해야 합니다.
  • 파일 열기 모드를 적절히 선택해야 합니다.

fprintf와 fscanf를 잘 활용하면 프로그램과 외부 파일 간의 데이터 교환이 자유로워집니다.
간단한 정보 저장부터 텍스트 기반 데이터 처리까지 폭넓게 사용할 수 있습니다.


● 실습 문제

문제 1

이름과 나이를 파일에 저장하는 코드를 fprintf로 작성하세요.

 

문제 2

저장된 파일에서 이름과 나이를 읽어 출력하는 fscanf 코드를 작성하세요.

 

문제 3

fscanf에서 데이터를 읽을 때 왜 주소 연산자(&)가 필요한가요?

 

문제 4

다음 코드에서 오류가 발생할 수 있는 이유는?
fscanf(fp, "%s %d", name, age);

 

문제 5

fprintf와 fscanf를 사용할 때 서식 문자열이 맞지 않으면 어떤 일이 일어날 수 있나요?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

▶ 정답 확인하기

정답 1

FILE *fp = fopen("info.txt", "w");
fprintf(fp, "이름: %s\n나이: %d", "준호", 22);
fclose(fp);

 

정답 2

FILE *fp = fopen("info.txt", "r");
char name[20];
int age;
fscanf(fp, "이름: %s\n나이: %d", name, &age);
printf("%s %d\n", name, age);
fclose(fp);

 

정답 3

scanf나 fscanf는 값을 변수에 저장해야 하므로, 주소를 전달해야 합니다.

 

정답 4

정수형 변수 age에 &가 빠졌기 때문에 프로그램이 비정상적으로 작동할 수 있습니다.

 

정답 5

파일 내용과 서식이 다르면 값이 제대로 읽히지 않거나, 오류가 발생할 수 있습니다.