10.4.3 일기장 읽고 쓰기
여기까지 문제없이 왔다면 파일이 잘 생성됐다는 뜻입니다. 그러면 일기장에 있는 내용을 읽어 오겠습니다. 앞에서 배운 대로 fgets()함수를 사용합니다.
➊ 파일에서 읽어 온 내용을 저장할 line 배열을 선언합니다.
➋ 파일 내용을 줄별로 읽어 올 때 최대 10000글자씩 읽어 오도록 배열의 크기는 10000으로 선언하는데, 10000 대신 MAX를 사용할 수 있게 main()함수 위에 #deifne MAX 10000으로 정의합니다.
➌ fgets()함수를 사용해 파일 포인터 file이 가리키는 파일로 가서 한 번에 MAX 크기만큼 문자열을 읽어 와 line 배열에 저장합니다. 이때 fgets()함수는 줄바꿈(\n)을 만날 때까지 문자열을 읽어 오므로 while 문의 조건으로 넣어 한 줄씩 읽어 옵니다. 읽어 올 데이터가 없으면 반환값이 NULL이 되어 반복문을 빠져나갑니다.
➍ 읽어 온 내용은 printf()문으로 출력합니다.
10.4 프로젝트.c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define MAX 10000 --------------------------------- ➋ 매크로 정의
int main(void) {
char password[20];
char c;
int i = 0;
char line[MAX]; -------------------------------- ➊ 파일에서 읽어 온 내용 저장
(중략)
if (strcmp(password, "skehzheld") == 0) { // 비밀번호가 맞았을 때
(중략)
while (fgets(line, MAX, file) != NULL) { --- ➌ fgets() 함수로 파일 읽어 오기
printf("%s", line); -------------------- ➍ 파일에서 읽어 온 내용 출력
}
} else {
printf("=== 비밀번호가 틀렸어요. ===\n\n");
}
return 0;
}