<전체코드>
#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) { //엔터 -> 비밀번호 입력 종료
password[i] = '\0';
break;
}
else { //사용자가 비밀번호 입력하는 중
printf("*");
password[i] = c;
}
i++; //배열 인덱스 증가
}
//지정한 비밀번호: fhEhekdcja(로또당첨)
printf("\n\n === 비밀번호 확인 중 === \n\n");
if (strcmp(password, "fhEhekdcja") == 0) { //strcmp()함수로 입력한 비밀번호 비교
printf("=== 비밀번호 확인 완료 === \n\n"); //비밀번호가 맞으면 확인 문구 출력
char* fileName = "C:\\Users\\홍여정\\Desktop\\secret.txt"; //파일명을 포인터 변수에 저장
//a+모드는 파일이 없으면 생성, 파일이 있으면 뒤에서부터 내용 추가
FILE* file = fopen(fileName, "a+b"); //파일 포인터 얻기
if (file == NULL) { //파일 열기
printf("파일 열기 실패\n");
return 1;
}
while (fgets(line, MAX, file) != NULL) { //fgets()함수로 파일 읽어오기
printf("%s", line); //파일에서 읽어 온 내용 출력
}
printf("\n\n내용을 계속 작성하세요! 종료하려면EXIT를 입력하세요.\n\n");
while (1) {
scanf("%[^\n]", contents); //줄바꿈 문자 (\n) 전까지 읽어 옴(한 문장씩)
getchar(); //엔터를 입력해 줄바꿈 문자 플러시 처리
if (strcmp(contents, "EXIT") == 0) {
printf("비밀 일기 입력을 종료합니다.\n\n");
break;
}
fputs(contents, file);
fputs("\n", file);//줄바꿈 문자를 파일에 추가
}
fclose(file); //파일 닫기
}
else { //비밀번호가 틀렸을 때
printf("=== 비밀번호가 틀렸어요. === \n\n");
}
return 0;
}
<실행화면>
- 비밀번호를 맞게 입력하면 바탕화면에 secret.txt에 텍스트가 업데이트 된다.
💡 getchar()함수와 _getch() 함수
getchar()함수는 키보드로 원하는 키를 입력한 후 반드시 엔터를 눌러야함.
_getch() 함수는 키를 입력하면 바로 작동
💡 플러시 처리
서식 지정자 %[^\n]으로 값을 입력받으면 줄바꿈 문자가 나오기 전까지의 문자열을 저장함.
scanf(()함수나 getchar() 함수로 입력받을 때 값은 변수에 저장되기 전에 입력 버퍼란 곳에 임시로 저장됨.
그래서 서식지정자로 %[^\n]을 지정하면 변수에 저장할 때 문자열만 저장하고 줄바꿈 문자는 버퍼에 그대로 있음. 엔처를 눌러서 입력 받은 줄바꿈 문자를 버리는 것을 플러시 처리라고 함.
'언어 > C' 카테고리의 다른 글
[코딩자율학습] 20일차 드디어 끝 그리고 후기 / 나도코딩의 C언어 입문 (0) | 2024.03.28 |
---|---|
[코딩자율학습] 18일차 파일입출력 (0) | 2024.03.27 |
[코딩자율학습] 17일차 너 내 도도독 집사가 되어라 (1) | 2024.03.26 |
[코딩자율학습] 16일차 구조체 (0) | 2024.03.25 |
[코딩자율학습] 15일차 동물카드 뒤집기 프로젝트 (0) | 2024.03.24 |