더북(TheBook)

10.4.4 전체 코드 확인하기

완성한 코드는 다음과 같습니다. 실행해서 결과를 확인해 봅시다.

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; // password 배열의 인덱스용 변수
    char line[MAX]; // 파일에서 읽어 온 내용 저장
    char contents[MAX] = ""; // 일기장에 입력한 내용 저장(빈 값으로 초기화)

    printf("비밀 일기에 오신 것을 환영합니다.\n");
    printf("비밀번호를 입력하세요(최대 20자리). : ");
    while (1) {
        c = _getch();
        if (c == 13) { // Enter -> 비밀번호 입력 종료
            password[i] = '\0';
            break;
        } else { // 비밀번호 입력 중
            printf("*");
            password[i] = c;
        }
        i++;
    }
    // 비밀번호: skehzheld(나도코딩)
    printf("\n\n=== 비밀번호 확인 중===\n\n");
    if (strcmp(password, "skehzheld") == 0) { // 비밀번호가 맞았을 때
        printf("=== 비밀번호 확인 완료 ===\n\n");
        char * fileName = "C:\\Users\사용자계정\\secretdiary.txt";
        // a+ 모드는 파일이 없으면 생성, 파일이 있으면 뒤에서부터 내용 추가
        FILE * file = fopen(fileName, "a+b");
        if (file == NULL) {
            printf("파일 열기 실패\n");
            return 1;
        }
        while (fgets(line, MAX, file) != NULL) { // 파일 읽어 오기
            printf("%s", line);
        }
        printf("\n\n내용을 계속 작성하세요! 종료하려면 EXIT를 입력하세요.\n\n");
        while (1) {
            scanf("%[^\n]", contents); // 줄바꿈 문자(\n) 전까지 읽어 옴(한 문장씩)
            getchar(); // Enter를 입력해 줄바꿈 문자 플러시 처리
            if (strcmp(contents, "EXIT") == 0) {
                printf("비밀 일기 입력을 종료합니다.\n\n");
                break; // while 문 탈출, 일기 쓰기 종료
            }
            fputs(contents, file);
            fputs("\n", file); // 줄바꿈 문자를 파일에 추가
        }
        fclose(file); // 파일 닫기
    } else { // 비밀번호가 틀렸을 때
        printf("=== 비밀번호가 틀렸어요. ===\n\n");
    }
    return 0;
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.