| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1757 人关注过本帖
标题:程序有严重漏洞,找不出原因!!走过路过千万要帮忙改过!!
只看楼主 加入收藏
dsjdcy
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-12-2
收藏
 问题点数:0 回复次数:10 
程序有严重漏洞,找不出原因!!走过路过千万要帮忙改过!!
问题就是main里面的for循环!当用户的输入以非数字开头,程序则进入失控的死循环!
看了几个小时,一点头绪都没有,实在搞不懂为什么会这样,我想开始新一轮的循环也行等待用户输入啊,可不知道为什么,只要输入以非数字开头,则scanf就一点作用都没有了!!

    代码在附件里面,望有高人能告之一二!!  先谢了!!

unit.rar (885 Bytes)
搜索更多相关主题的帖子: 漏洞 改过 
2007-12-11 12:25
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
scanf("%f%s",&a,c);这语句当你输入的格式不对时当然会失控。另外,你的程序什么时候结束啊?for循环会一直执行,除非强制中断。还有float不能用unsigned来修饰!
2007-12-11 12:51
布拉莫斯
Rank: 1
来 自:中国太平洋舰队
等 级:新手上路
帖 子:169
专家分:0
注 册:2007-3-31
收藏
得分:0 
支持! 严重同意楼上的观点!

真理往往掌握在少数人手中,可现实却是少数服从多数!
2007-12-11 12:58
Karl168
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-9-23
收藏
得分:0 
同意楼上的观点,程序本身有明显的缺陷
2007-12-11 13:53
C语言的深度
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:卡特的怀抱
等 级:版主
威 望:1
帖 子:9577
专家分:19
注 册:2007-10-22
收藏
得分:0 
额 两楼的正解!
取地址只有一个

用代码打出楼房...用编程编出幸福...
2007-12-11 14:50
dsjdcy
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-12-2
收藏
得分:0 
谢谢各位的提示!!!

   我平时上班经常需要用到单位的换算,所以写了这个,用没有终止条件的for是为什么使操作更简洁方便,要退出我就用ctrl+c.程序运行后我直接输入我想要转换的数据就行了!!!这个确实是需要改进,但还没想到在不影响这种简洁操作的情况下改进的方法!!
   现在需要解决的问题就是当输入类型不匹配时如何解决循环失控的问题!!期待各位高见!

有兴趣共同学习的加QQ287624635 !或E-main至dsjdcy@
2007-12-12 10:03
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
经常用while(scanf(...)!=EOF)来结束循环,当你需要结束循环时用ctrl+z就可以了!
2007-12-12 11:16
dsjdcy
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-12-2
收藏
得分:0 
回复 7# 的帖子
结束循环很容易,我就是不想让循环结束!!我是想让它一输入值不匹配的情况下退出当前循环,进入一下新的循环中,就是这里有问题!!
输入值不匹配时break;则很顺利退出循环,若是加contunie你猜会怎么样!    下一轮新的中,scanf根本就不等你输入而且返回值和上次一样,因些就这样进入死循环了!!试了很多方法都不能解决这个问题!!!  

     scanf的返回值:返回类型匹配的参数个数,流错误则返回EOF;

有兴趣共同学习的加QQ287624635 !或E-main至dsjdcy@
2007-12-13 12:46
Palepast
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-10-15
收藏
得分:0 
  要那样的话用GOTO可以不? 再复制一次循环当备用情况 如果这次又出错则再返回原来的循环里?(意思是1出错则GOTO到2 2再出错的话再返回1里面)
2007-12-13 14:30
Palepast
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-10-15
收藏
得分:0 
呃 老师教导说少用goto 所以再想下 用return也有可能做到 不过现在有点事来不及细想了 望各位高手继续建议啊
2007-12-13 14:32
快速回复:程序有严重漏洞,找不出原因!!走过路过千万要帮忙改过!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017475 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved