关于解决输入整形变量时输入字符型造成死循环
需求
当我们用scanf()输入整形数字时,往往会遇到输入字符造成死循环的情况,现在我们来解决这个问题。
这问题是我在学校的实践课中遇到的问题,然后在网上找了一些资料。
分析
当我们输入整形数据时,整形变量就会接收,但是当我们输入字符型时,scanf()不会接收字符并且跳过,这时字符并不会自己消失掉,它会一直存储在缓存区中,然后scanf()一直读取一直跳过,从而造成死循环
例如
while(scanf("%d",&n)!=EOF)
{if(n==1)printf("%d",n);else printf("输入错误");
}
输入常规整形时

当我们输入字符型时,会造成死循环

解决方法
//这时我们可以用一个字符数组来接收这种问题#include"stdio.h"
#include"stdlib.h"
#include
int main()
{int n,m,i,j;char x,s[20];while(scanf("%s",s)!=EOF){if(strlen(s)!=1) {printf("输入错误,请重新输入\n");continue;}m=s[0]-'0'; if(m==1) printf("%d\n",n);else printf("输入错误,请重新输入\n");}
}
这时我们就可以解决这个问题
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
