while(1){
int dics = 1;
dics = scanf_s("%d", &menu);
if (dics == 0) {
printf("올바르지 않은 입력입니다.");
continue;
}
}
여기서 printf만 무한반복되는데 어케하냐
while(1){
int dics = 1;
dics = scanf_s("%d", &menu);
if (dics == 0) {
printf("올바르지 않은 입력입니다.");
continue;
}
}
여기서 printf만 무한반복되는데 어케하냐
dics가 0이라서
printf 밑에 dics 1로 초기화 해도 계속 루프걸림
`while(1)`은 무한 루프를 생성합니다. 이 코드에서 `scanf_s` 함수는 사용자로부터 입력을 받아 `menu` 변수에 저장합니다. 만약 사용자가 정수가 아닌 값을 입력하면, `scanf_s`는 0을 반환하고, 이 경우 `printf`가 "올바르지 않은 입력입니다."라는 메시지를 출력합니다. 문제는 `scanf_s` 함수가 잘못된 입력을 버퍼에서
제거하지 않는다는 것입니다. 따라서 사용자가 정수가 아닌 값을 입력하면, 그 값은 계속 버퍼에 남아 있게 되고, `scanf_s`는 계속 0을 반환합니다. 결과적으로, 잘못된 입력이 한 번 발생하면 `printf`가 무한 반복됩니다. 이를 해결하기 위해 잘못된 입력을 버퍼에서 제거해야 합니다. 예를 들어, `scanf_s`가 0을 반환할 때 `getcha
`함수를 사용하여 버퍼를 비울 수 있습니다.
아 저게 단순히 초기화 한다해서 되는게 아니라
while(1) { int dics = 1; dics = scanf_s("%d", &menu); if (dics == 0) { printf("올바르지 않은 입력입니다.\n"); while(getchar() != '\n'); // 잘못된 입력을 버퍼에서 제거 continue; }
ㄳ