简而言之,我的代码是,
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
while(n != 0)
{
scanf("%d", &n);
printf("%d\n", n);
}
return 0;
}
它是为integer
输入。但是如果我输入一个character
相反(尽管 n 被声明为integer
),循环无限并打印最后一个integer
输入值。如果我输入一个character
乍一看,它似乎打印了一个内存地址。我的问题是,如果我输入一个character
相反integer
?
当 scanf 失败时,它不会从输入缓冲区中删除字符(成功时它会从缓冲区中删除数据)。因此,下次在循环中触发 scanf 时,它根本不会等待用户输入(因为它的缓冲区中有一个未读字符)。但它一次又一次失败(因为每次失败),因此将进入无限循环。
我坚信第一个 scanf 包含%c作为格式说明符。
您可以通过以下方式摆脱无限循环
if(scanf("%d",&n)==0) break;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)