0
我一直在研究一个需要整数输入的程序,但是每次意外地输入一个非整数时,scanf函数停止工作或陷入循环。使用scanf只能输入整数?
这是什么,我试图做一个例子:
int n;
printf("please enter 0 or 1\n");
top:
scanf("%i",&n);
if(n == 0)
{
printf("you entered 0!\n");
}
if(n == 1)
{
printf("you entered 1!\n");
}
if(n != 0 && n != 1)
{
printf("please enter either 0 or 1.");
goto top;
}
第三,如果是,如果你没有输入正确的号码发送给您回顶,但这并不信件工作和其他角色。 如果给出非整数输入,您如何将它发送回顶端?
道奇它用'fgets'进入和应用'sscanf'并检查它的返回值(研究手册页:scanf家族的函数返回值是什么?)。如果你没有得到你想要的,转储输入字符串,并得到另一个。 –
“如果给出非整数输入,你怎么能把它发送回顶端?” - >读取非整数并首先将其扔掉。 – chux
您应该检查'scanf()'的返回值以识别何时发生错误,例如输入不是数字。当发生这种匹配失败时,您必须从标准输入中读取至少一个字符 - scanf()目前正在窒息 - 否则它将保持在那里以在下一次尝试中造成麻烦。 –