10.3.2 fscanf( ) 함수로 파일 읽기
이제 앞에서 만든 test2.txt 파일의 내용을 읽어 오겠습니다.
➊ #include 지시문 아래에 MAX를 파일 최대 크기인 숫자 10000으로 치환하기 위해 #define 지시문을 추가합니다.
➋ ‘추첨번호’와 ‘보너스번호’라는 문자열을 읽어 와 저장할 곳이 필요하므로 크기가 MAX(10000)인 배열 str1과 str2를 선언합니다.
➌ 읽어 온 추첨번호 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]에 저장된 값을 출력해 파일에서 데이터를 잘 읽어 왔는지 확인합니다.