我写了一些C代码,你可以通过输入1或2来从答案中选择,如果你输入一个更高的数字,它会带你回来选择另一个数字就好了。但是,如果我尝试输入不是值或数字的内容,如字符串或字符,底部的错误消息将无限重复。当输入任何其他字符时,如何让我的代码的行为与输入比1或2更高的数字相同?这里我使用抽象的代码:如何停止制作此C代码循环?
#include <stdio.h>
int a;
int main(){
b:scanf("%d", &a);
if(a==1)
{
a=0;
}
if(a==2)
{
a=0;
}
else
{
a=0;
printf("\nERROR: Please try again.\n\n");
goto b;
}
}
编辑:显然返回值仍然卡在scanf()时,它返回到它。我如何清除scanf()的返回值?
我会使用一个'while'循环这个,而不是goto方法的。然后只是从循环中断开,或者设置一个标志来决定是否继续循环。 goto的合法使用案例远远少于合法用例。 – Carcigenicate
呃...后藤。呸。学习正确的方法来做到这一点*现在*,在为时已晚之前。 –
如果你用'fgets'得到输入,然后在输入字符串中使用'sscanf',当用户没有输入你需要的东西时,你可以忘记以前的输入字符串并重试。 OTOH使用'scanf'时,任何被拒绝的输入都将保留在输入缓冲区中。 **总是**检查'scanf'函数族的返回值(参见手册页了解其含义)。永远不要认为输入数据是*好*。 –