【发布时间】:2020-04-17 07:31:04
【问题描述】:
我有以下代码:
#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 的输入。例如,如果用户输入一个数字,它会成功运行,但是如果用户输入一个字符串或字符之类的东西,它会一次又一次地不停地打印菜单。
我想检查用户是否输入了数字。如果没有,我想再次询问输入。 我试过这样的事情:
if(scanf("%d", &a)!=1) {
printf("Enter again: ");
scanf("%d", &a);
}
或者:
assert(scanf("%d", &a);
assert 函数程序停止执行,但我希望它在一段时间后继续执行。
有什么想法吗?
【问题讨论】: