C语言怎么才不会输入错误的while一直循环
1、比如whi盟敢势袂le(scanf("%d",&a)){...},如果输入的是字母,他就会一直循环,不会中断,除非关闭;
2、这个原因是因为错误输入的内容会保留在输入流,下一次判断会从输入流开始读取,因为错误输入的内容还在,所以直接判断错误,继续循环;
3、可以使用清理输入流fflush(stdin);
4、但有些编译器并不支持清理输入流。所以我们这时需要用手动输入让其清除。使用getchar();让其接收错误的字符;
5、但这样就会变成这样,如果输入多个错误就会出现多个次数的循环;直至没有错误输入;这样如果循环内容多,所消耗的资源也就多了。
6、所以我们可以使用while()来执行里面的消除字符,但如果直接这样while(getchar())就会进入无限循环,所以我们可以让其接收一个终止条件,每次输入完我们都会按回州榨丘醌车,那就让其接收'\n'换行符终止自己的循环。
7、这样就完成了。不会无限循环,也没有多次循环消除的问题了。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:84
阅读量:73
阅读量:25
阅读量:26
阅读量:50