C语言怎么才不会输入错误的while一直循环
C语言使用while循环里面输入后,如果进入while条件判断不合理,就一直循环,不会让你再次输入的解决方法。
操作方法
- 01
比如while(scanf("%d",&a)){...},如果输入的是字母,他就会一直循环,不会中断,除非关闭;
- 02
这个原因是因为错误输入的内容会保留在输入流,下一次判断会从输入流开始读取,因为错误输入的内容还在,所以直接判断错误,继续循环;
- 03
可以使用清理输入流fflush(stdin);
- 04
但有些编译器并不支持清理输入流。所以我们这时需要用手动输入让其清除。使用getchar();让其接收错误的字符;
- 05
但这样就会变成这样,如果输入多个错误就会出现多个次数的循环;直至没有错误输入;这样如果循环内容多,所消耗的资源也就多了。
- 06
所以我们可以使用while()来执行里面的消除字符,但如果直接这样while(getchar())就会进入无限循环,所以我们可以让其接收一个终止条件,每次输入完我们都会按回车,那就让其接收'\n'换行符终止自己的循环。
- 07
这样就完成了。不会无限循环,也没有多次循环消除的问题了。
赞 (0)