더북(TheBook)

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;
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.