【发布时间】:2021-04-05 17:28:34
【问题描述】:
我正在尝试检查输入中是否有字母,如果有,请重复 scanf 函数(特别是在案例 1 的 switch 语句之后)。
它能够检测单个字符,如果输入一个字符,变量保持为0。 但是,如果输入了一个数字和一个字符,它将接受该数字并忽略该字符。 这是主要问题。
想知道过滤用户是否输入字母以要求用户重新输入数字的可能方法。
while (true) {
printf("Enter code 1 :");
number = 0;
scanf_s("%d", &number);
if (number == 0) {
// find the new line to recieve new input
while (fgetc(stdin) != '\n');
}
switch (number) {
case 1:
managers = 0;
printf("Managers\n");
while (managers == 0) {
managers == 0;
scanf_s("%lf", &managers);
if (managers == 0) {
managers == 0;
(printf("You have not enterd a number\n")),(fgetc(stdin) == '\n',managers==0, scanf_s("%lf", &managers));
}
}
printf("Managers have this much %.2f.\n", managers);
break;
default:
printf("Invalid entry please enter 1 or 2.");
break;
}
}
}```
【问题讨论】:
-
检查 scanf 返回的值。这是很好的信息。
-
man scanf?实际上,只需检查scanf返回值即可。
标签: c validation scanf