작성
·
133
0
소스코드가 제대로 입력되지 않은 것 같아서 다시 올립니다!!
'''#define _CRT_SECURE_NO_WARNINGS
//비밀번호를 입력받아서 맞는경우: 비밀일기를 읽어와서 보여줌
//틀린경우: 경고메세지 표시 후 종료
int main(void)
{
char line[MAX];
char contents[MAX];
char password[20];
char c; // 비밀번호 입력시 키값 확인
printf("비밀일기에 오신것을 환영합니다!\n");printf("비밀번호를 입력하세요!\n");//getchar(): 엔터를 입력받아야 동작 getch(): 키입력시 바로 동작int i = 0;while (1){ c = getch(); if (c == 13) // enter { password[i] = '\0'; break; } else // 비밀번호 입력중 { printf("!"); password[i] = c; } i++;}printf("\n\n======비밀번호 확인 중....==========\n\n");if (strcmp(password, "12345") == 0){ printf("==비밀번호 확인완료!==\n"); char * fileName = "c:\\file_practice\\secretdiary.txt"; FILE * file = fopen(fileName, "a+b"); // 파일이 없으면 생성하고 파일이 있으면 append를 한다 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입력 (\n): flush 처리 if (strcmp(contents, "EXIT") == 0) { printf("비밀일기 입력을 종료합니다\n\n"); break; } fputs(contents, file); fputs("\n", file); // enter를 위에서 무시처리 하였으므로 임의로 추가 } fclose(file);}else{ printf(" ==== 비밀번호가 틀렸어요!====\n"); printf("꺅!! 당신 누구야! 남의 일기장을!!\n\n\n");}
return 0;
}'''
답변 2
0
시스템상에서 글자를 2번씩 인지하는 경우라면 우선 대안으로는 글자를 2번씩 받도록 해서 그 중 하나는 버리도록 처리할 수 있겠네요, 코드상 입력 받는 부분을 아래와 같이 두번 사용하시면 처음 getch을 통해 받은 부분은 사용하지 않고 두번째 getch을 통해 받은 값만 사용할수 있을것 같습니다.
c = getch();
c = getch();
이렇게 똑같은 문장 두 번 사용해서 실행 해보시겠어요?
0
안녕하세요 나도코딩입니다.
아래 코드를 실행시키면 결과가 어떻게 나오나요?
#include<stdio.h>int main(void){char c;while (1){c = getch();printf(입력값 : %c\n, c);}return 0;
}
정상적이라면 1234 입력시 아래와 같이 나와야 합니다. 그렇지 않고 다른 글자들이 함께 입력된다면 후속 작업이 필요할 수도 있겠네요 (해당하는 키를 찾아서 skip 처리를 한다던지 등이요)
입력값 : 1
입력값 : 2
입력값 : 3
입력값 : 4
..
실행해보시고 다시 글 남겨주세요 !