概述
终于找到满意的答案了,如下:
以下转自http://hi.baidu.com/tangzs/blog/item/4cb1304e96f9a6cad0c86ac6.html关键词:对scanf返回值的检查 / 及对输入缓冲的清空,scanf造成的死循环
很多人在使用scanf的时候都不会去检查它的返回值, 包括我在这之前也没有去注意它, 如果你方便去翻翻c语言的教科书, 估计也很难找到有检查scanf的例子或代码段, 至少我还没有见过, 当然, 书上的代码毕竟只是一个练习, 和真正用于产品级别的代码有很大的差别。一个偶然的机会, 让我注意到检查scanf返回值的重要性, 写下来和大家分享一下:)下面是一个最简单不过的scanf用法,但却有隐患:int n;scanf( "%d", &n);...scanf要求取一个整数,但如果输入的是一个字母,或其它不是数字的字符时,情况会怎么样呢? 结果是scanf不读取数据,不修改n的值直接返回了,这样,n就变成了一个未被初始化的变量,其值不可确定,因为其值不确定,所以就算你对n作是否合法的判断,也还是可能会有问题,你也许会说,用户应该会输入一个合法的值的,但是,有时scanf并不总是从键盘中读入数据,它可能从其它的设备中去读,例如管道,UNIX中允许这样的玩法。你也许还会说,情况没有那么糟啦,可以先初始化n为零,再去判断n是否合法嘛,例如下面这样:int n = 0;scanf( "%d", &n);if (n != 0)
{ //OK,读到用户的值了}这样好像还是有麻烦啊,这个初始值你怎么定义才好? 0吗? 程
最后
以上就是安详曲奇为你收集整理的c语言while循环取到空停止,关于while循环体内语句被漏执行造成死循环问题的全部内容,希望文章能够帮你解决c语言while循环取到空停止,关于while循环体内语句被漏执行造成死循环问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复