
c语言中定义了int a;输入时故意输入字母就会死循环 怎么解决?
inta,b;printf("enterthenumber:\n");scanf("%d",&a);程序运行时输入字母就跪了怎么样输入字母可以避免这样的情况...
int a,b;
printf("enter the number:\n");
scanf("%d",&a);
程序运行时输入字母就跪了 怎么样输入字母可以避免这样的情况 展开
printf("enter the number:\n");
scanf("%d",&a);
程序运行时输入字母就跪了 怎么样输入字母可以避免这样的情况 展开
展开全部
在C语言中,要输入值到整型变量a中,需要使用
scanf("%d",&a);
如果是在循环中输入,那么一旦出错,就会导致后续均无法输入。
为避免这种情况,可以使用判断scanf的返回值来确定输入是否成功。
以下是循环输入整数,直到遇到-1退出的代码
while(1)
{
scanf("%d",&a);
if(a == -1) break;
printf("%d",a);
}
在这个程序段执行时,如果输入了字母就会导致死循环。
可以修改为
while(1)
{
if(scanf("%d",&a)!=1)
{
getchar();
continue;
}
if(a == -1) break;
printf("%d",a);
}
其原理如下:
scanf 的返回值是实际输入成功变量的个数。当scanf输入一个int型并成功时,会返回1。而遇到了字符时,输入失败,实际输入的数量为0,返回的就是0,这时把缓冲中影响输入的字符用getchar读取,就清除了这个障碍,继续下次读取(continue)。
只有当输入整型正确,scanf返回1时,才会继续执行循环中的其它语句。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询