숙제의 일부로 stdin에서 하나의 char을 읽고 그것에 따라 행동하려고합니다 :C - stdin에서 하나의 문자를 읽으려고 시도하는 중/scanf/getchar
char choice;
while (1) {
printf("please enter [y]es, [n]o or [m]aybe: ");
scanf("%c", choice);
fflush(stdin);
// validate input
if (choice == 'y' || choice == 'n' || choice == 'm') {
break;
} else {
printf("Please enter only \'y\', \'n\' or \'m\'!\n");
}
}
// do something with the input
if (choice == 'y') {
printf("you selected yes!\n");
}
어떤 이유에서든 scanf는 char 및 line-feed를 모두 캡처하므로 입력 내용을 처리하고 "y ','n '또는'm '만 입력하십시오. ! " 선. stdin에 여러 문자를 입력하면 모든 행에 대해 해당 행이 인쇄되고 첫 번째 문자에는 올바르게 수행됩니다. 따라서, 예를 들어 : 나는 getchar가를 사용하는 경우
$ ./run
please enter [y]es, [n]o or [m]aybe: y<return>
you selected yes!
Please enter only 'y', 'n' or 'm'!
$ ./run
please enter [y]es, [n]o or [m]aybe: yes<return>
you selected yes!
Please enter only 'y', 'n' or 'm'!
Please enter only 'y', 'n' or 'm'!
Please enter only 'y', 'n' or 'm'!
$
같은 일이 발생합니다. 내가 뭘 놓치고 있니? 감사. 제대로 작동하려면
의 해결 방법은 좋은 일입니다, 감사합니다! – sa125
예기치 않은 입력이있을 때까지; 예를 들어 "y x z"를 입력 해보십시오. 문제의 해결 방법 인 – Clifford