Привет, ребята. У меня есть следующий код:
#include <stdio.h>
void printMenu() {
printf("********************************\n");
printf("*Enter a number (-1 to exit): *");
printf("\n* 1 - Add new student *");
printf("\n* 2 - Delete a student *");
printf("\n* 3 - Update student *");
printf("\n* 4 - Print a student *");
printf("\n* 5 - Print all students *");
printf("\n********************************\n");
printf("\nEnter: ");
}
int main (int argc, char **argv) {
int a;
printMenu();
scanf("%d", &a);
while(a != -1) {
switch(a) {
case 1:
printf("1\n");
break;
case 2:
printf("2\n");
break;
case 3:
printf("3\n");
break;
case 4:
printf("4\n");
break;
case 5:
printf("5\n");
break;
default:
printf("\nInvalid answer!\n");
break;
}
puts("");
printMenu();
scanf("%d", &a);
}
return 0;
}
Я хотел бы проверить ввод scanf
. Например, если пользователь вводит число, оно работает успешно, но если пользователь вводит что-то вроде строки или символа (например, a или grebv), он печатает без остановки меню снова и снова.
Я хотел бы проверить если пользователь вводит номер или нет. Если нет, я хотел бы спросить еще раз о входе. Я пробовал такие вещи, как:
if(scanf("%d", &a)!=1) {
printf("Enter again: ");
scanf("%d", &a);
}
Или:
assert(scanf("%d", &a);
С assert
функция программирования перестает выполняться, но я хочу, чтобы она продолжалась через некоторое время. Есть идеи?