Я пытался иметь защитное программирование с вводом как целое число, но программа входила бы в бесконечный цикл, если бы я ввел символ. Затем я переключился на ввод как символ, но он дважды выполняет цикл. Один раз для неправильного символа и один раз для окончания строки.защитное программирование в меню. какой тип ввода я должен иметь?
Есть ли способ получить цикл, только один раз?
код:
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 n; scanf ("% d", &n); '? – Mikhail
он переходит в бесконечный цикл, если n = любой символ вместо числа – n17n
@NikolaosTsouktakos: это потому, что scanf не сможет прочитать число, а способ, которым ваш цикл написан, будет продолжайте пытаться, используя тот же самый вход навсегда. – teppic