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