더북(TheBook)

10.3.2 fscanf( ) 함수로 파일 읽기

이제 앞에서 만든 test2.txt 파일의 내용을 읽어 오겠습니다.

#include 지시문 아래에 MAX를 파일 최대 크기인 숫자 10000으로 치환하기 위해 #define 지시문을 추가합니다.

‘추첨번호’와 ‘보너스번호’라는 문자열을 읽어 와 저장할 곳이 필요하므로 크기가 MAX(10000)인 배열 str1str2를 선언합니다.

읽어 온 추첨번호 6개를 저장할 정수형 배열 num과 읽어 온 보너스번호를 저장할 정수형 변수 bonus를 선언하고 모두 0으로 초기화합니다.

파일 쓰기를 할 때처럼 파일 포인터를 얻고 파일 포인터가 NULL이면 ‘파일 열기 실패’를 출력하고 프로그램을 종료합니다. 이때 파일 모드를 바이너리 데이터의 쓰기 전용이 아닌 읽기 전용(rb)으로 설정해야 합니다.

fscanf()함수로 test2.txt 파일의 내용을 읽어 옵니다. ‘추첨번호’는 문자열이므로 서식 지정자를 %s로 하고, 추첨번호 6개는 정수이므로 모두 %d로 지정합니다. 그리고 읽어 온 데이터를 저장할 변수의 주소를 적습니다. ‘추첨번호’ 문자열은 str1 배열에 저장합니다. 이때 배열명 자체가 배열의 시작 주소이므로 str1이라고만 적으면 됩니다. 나머지 추첨번호는 각각 num[0]~num[5]에 저장합니다. 여기도 주소를 넣어야 하므로 &num[0]~&num[5]로 적습니다.

printf()함수로 str1 배열과 num[0]~num[5]에 저장된 값을 출력해 파일에서 데이터를 잘 읽어 왔는지 확인합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.