정수로 입력하는 방어 프로그래밍을 시도했지만 문자를 입력하면 프로그램이 무한 루프가됩니다. 그런 다음 문자로 입력되도록 전환했지만 루프를 두 번 수행합니다. 한 번 잘못된 문자와 한 번 줄 끝 키 입력에 대한.메뉴에 방어적인 프로그래밍. 어떤 유형의 입력을 받아야합니까?
루프를 만들 수있는 방법이 있습니까?
코드 :
int main(int argc, char *argv[])
{
char choice='5';
while (choice != '1' && choice !='2' && choice !='3' && choice!='4' && choice!='0')
{
printf("Parakalw epilekste ena apo ta parakatw\n\n");
printf("1.\tKafe 1.5 euro\n");
printf("2.\tKafe me gala 1.8 euro\n");
printf("3.\tSokolata 2.1euro\n");
printf("4.\tSokolata me gala 2.4 euro\n");
printf("0.\tExodos\n\n");
printf("parakalw eisagete thn epilogh sas: ");
scanf("%c",&choice);
}
system("PAUSE");
return 0;
}
왜 int가 아닐까요? int n; scanf ("% d", &n);'? – Mikhail
n = 숫자가 아닌 임의의 문자 인 경우 – n17n
@NikolaosTsouktakos : scanf가 숫자를 읽지 못하고 루프가 쓰여지는 방식이기 때문에 무한 루프가됩니다. 계속해서 동일한 입력을 사용하여 계속 노력하십시오. – teppic