C语言使用while循环里面输入后,如果进入while条件判断不合理,就一直循环,不会让你再次输入的解决方法。
工具/原料
一个编译器,一个记事本(或者其他的文本编译器)
方法/步骤
1
比如while(scanf('%d',&a)){...},如果输入的是字母,他就会一直循环,不会中断,除非关闭;
2
这个原因是因为错误输入的内容会保留在输入流,下一次判断会从输入流开始读取,因为错误输入的内容还在,所以直接判断错误,继续循环;
3
可以使用清理输入流fflush(stdin);
4
但有些编译器并不支持清理输入流。所以我们这时需要用手动输入让其清除。使用getchar();让其接收错误的字符;
5
但这样就会变成这样,如果输入多个错误就会出现多个次数的循环;直至没有错误输入;这样如果循环内容多,所消耗的资源也就多了。
6
所以我们可以使用while()来执行里面的消除字符,但如果直接这样while(getchar())就会进入无限循环,所以我们可以让其接收一个终止条件,每次输入完我们都会按回车,那就让其接收'\n'换行符终止自己的循环。
7
这样就完成了。不会无限循环,也没有多次循环消除的问题了。
下一篇:C语言的基本使用