Мой код выглядит следующим образом:инструкция "scanf" не выполняется?
int main(int argc, char **argv)
{
int quit=1;
int operation;
paintUI();
init();
while(quit)
{
printf("please input a operation code:");
scanf("%d",&operation);
switch(operation)
{
case 1:addBook();break;
case 2:deleteBook();break;
case 3:borrowBook();break;
case 4:backBook();break;
case 5:printAll();break;
case 6:printAllBorrowed();break;
case 7:findByNameAdapter();break;
case 8:findByNumberAdapter();break;
case 9:save();quit=0;break;
case 0:system("cls");paintUI();break;
default:printf("input error\n");break;
}
}
return 0;
}
, когда вход в целое число к «операции», код работает well.But, когда я ввести символьное значение на цели, код будет пойман в бесконечный цикл и напечатайте «входную ошибку» все время.Когда я отлаживаю, я обнаружил, что после ввода значения char для цели оператор «scanf» («% d», &) не выполняет больше, поэтому Код операции всегда неверный. Кто-нибудь скажет мне добавить инструкцию «fflush (stdin);», чтобы очистить входной кеш и решить эту проблему. Но почему, когда я ввожу неправильный код операции целого кода, код может работать хорошо даже хотя я не добавляю утверждение «fflush (stdin)».
Попробуйте «int countOfScaned = scanf («% d », & operation)' –
Просто прочитайте строки. Это намного надежнее ... –
DCV 'cos no aparrent отладка. –