더북(TheBook)

➊ 앞에서 입력받은 내용을 contents 배열에 저장했습니다. 이때 사용자가 입력한 내용이 ‘EXIT’면 프로그램을 끝내야 하므로 이 부분을 if 문으로 처리합니다. 문자열을 비교하므로 strcmp()함수를 사용합니다. contents 배열에 저장된 값과 ‘EXIT’ 문자열을 비교해 반환하는 값이 0이면 두 문자열이 같다는 뜻이므로 if 문 안의 내용을 수행합니다.

➋ if 문 안에서 ‘비밀 일기 입력을 종료합니다.’라는 안내 문구를 출력합니다.

➌ break 문으로 while 문을 빠져나오면 일기 쓰기가 종료됩니다.

➍ 사용자가 입력한 내용이 ‘EXIT’가 아니면 fputs()함수로 contents 배열에 저장된 내용을 파일 포인터 file이 가리키는 파일에 저장합니다.

➎ 앞에서 입력한 내용 중에서 줄바꿈한 부분을 getchar()함수로 없애버렸습니다. 그래서 fputs()함수로 file이 가리키는 파일에 임의로 줄바꿈 문자를 추가합니다.

➏ 입력한 내용을 파일에 모두 저장하면 fclose()함수로 파일을 닫습니다.

10.4 프로젝트.c

while (1) {
    scanf("%[^\n]", contents); 
    getchar(); 
    if (strcmp(contents, "EXIT") == 0) { -------------- ➊ 입력값과 ‘EXIT’ 문자열 비교
        printf("비밀 일기 입력을 종료합니다.\n\n"); --- ➋ 안내 문구
        break; ---------------------------------------- ➌ while 문 탈출, 일기 쓰기 종료
    }
    fputs(contents, file); ---------------------------- ➍ 입력한 내용 파일 쓰기
    fputs("\n", file); -------------------------------- ➎ 줄바꿈 문자를 파일에 추가
}
fclose(file); ----------------------------------------- ➏ 파일 닫기

비밀 일기를 저장한 파일을 불러와 원래 있던 내용을 보여 준 다음, 추가로 내용을 더 입력받는 것까지 모두 처리했습니다.