当在C程序中输入不合法的数据时,往往可能会导致一些死循环出现,例如:
#include<stdio.h>
int main()
{
int k=1;
while(k)
{
printf("请输入一个非零整数:");
scanf("%d",&k);
printf("%d\n",k);
}
return 0;
}
- 当输入小数时:
- 当输入字符时:
- 当输入整数加字符时:
都会出现这种死循环,
这时我们可以用一个if语句做判断
if(!scanf("%d",&k))
{
printf("输入错误\n");
scanf("%s",&a);
}
不过这里的小数和真数加字符串还是不行,会再次循环一边,系统会把小数认为整数加字符串:
但至少解决了单纯的字符串问题同时也不会导致死循环