18.09.22 13:30 작성
·
123
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
2018. 09. 25. 08:13
시스템상에서 글자를 2번씩 인지하는 경우라면 우선 대안으로는 글자를 2번씩 받도록 해서 그 중 하나는 버리도록 처리할 수 있겠네요, 코드상 입력 받는 부분을 아래와 같이 두번 사용하시면 처음 getch을 통해 받은 부분은 사용하지 않고 두번째 getch을 통해 받은 값만 사용할수 있을것 같습니다.
c = getch();
c = getch();
이렇게 똑같은 문장 두 번 사용해서 실행 해보시겠어요?
0
2018. 09. 22. 17:25
안녕하세요 나도코딩입니다.
아래 코드를 실행시키면 결과가 어떻게 나오나요?
#include<stdio.h>int main(void)
{
char c;
while (1)
{
c = getch();
printf(입력값 : %c\n, c);
}
return 0;
}
정상적이라면 1234 입력시 아래와 같이 나와야 합니다. 그렇지 않고 다른 글자들이 함께 입력된다면 후속 작업이 필요할 수도 있겠네요 (해당하는 키를 찾아서 skip 처리를 한다던지 등이요)
입력값 : 1
입력값 : 2
입력값 : 3
입력값 : 4
..
실행해보시고 다시 글 남겨주세요 !