【发布时间】:2019-11-22 08:25:44
【问题描述】:
我试图征求意见。如果它不是整数,那么它应该再次要求输入,这就是我使用递归的原因,如下所示。
#include <stdio.h>
void hi() {
int a;
printf("Input a: ");
if(scanf("%d", &a) == 0)
a = -1;
switch(a) {
case 1:
printf("Hello!");
break;
case 0:
return;
default:
hi();
return;
break;
}
}
int main()
{
hi();
return 0;
}
输出是
Input a: *asd* Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a: Input a:
当我输入非整数值时,为什么 hi() 中的 scanf 不工作 (它不会停止 printf 并询问我的输入) 我该如何解决?
【问题讨论】:
-
为此使用递归的想法很糟糕。我宁愿使用
do { ... } while(); -
由于扫描继续失败,请阅读此答案:stackoverflow.com/a/4016721/4562521