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