| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6743 人关注过本帖, 1 人收藏
标题:(5)C语言问题之人员管理系统
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不看源代码都猜到这种程序漏洞和破绽会在哪里。换句话说,若有人提交功课,最好自己先用同样的方法测试一下自己的程序,连这些孔都堵不住,还要发布出来,说自己的程序过了,那么他将来吃饭的本是也可想而知——问题是完全没有这种意识,不是说能力,意识最重要,没意识能力再强也是假,出来别人是不会替你做测试,连基本的问题都要别人替你测出来,那人家怎么看你就是影响观感的大事了。

这段话不是针对你,毕竟你是初学,肯听教是好的,我指的是那些教他还要诸多辩驳,嫌弃你要求高,说不需要如何这般的那种人,论坛上这种人多的是。

授人以渔,不授人以鱼。
2015-12-12 19:58
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
呵.呵,还有这么多漏洞,吓得楼主一哆嗦,饭都没吃好就回去玩捉虫游戏了。。

我们都在路上。。。。。
2015-12-12 20:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
没事,慢慢捉,虫是捉不完的。

授人以渔,不授人以鱼。
2015-12-12 20:33
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
以下是引用TonyDeng在2015-12-12 19:49:59的发言:

这次不截图,你按如下步骤操作一次:
1.进入程序到菜单
2.选1,问人数时输入随便一个字母
3.然后,你试试如何才能正常录入?

会提示人数已超出上限,现在查到scanf输入数字的话会有返回值,我再看看该怎么改。
2015-12-12 21:25
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
才发现书上的某一节——“模块化程序设计”里的猜数游戏中对输入的合法性解决办法
改了下,输入可以改成这样:
程序代码:
int ret,number;
printf("请输入本次录入的成员人数:");
scanf("%d",&number);
ret=scanf("%d",&number);
while(ret!=1)
{
    printf("★输入错误,请按回车返回重新输入!\n");
    while(getchar()!='\n');            //清除输入缓冲区中的错误数据
    printf("请输入本次录入的成员人数:");
    ret=scanf("%d",&number);
}


[此贴子已经被作者于2015-12-12 21:40编辑过]

2015-12-12 21:39
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
这个问题虽然解决了,可是这句不理解

 while(getchar()!='\n');    //清除输入缓冲区中的错误数据


不加这句的话,“请输入本次录入的成员人数:★输入错误,请按回车返回重新输入!”死循环了,加上就正常了。
感觉是一条循环语句么,怎么个清除了?

[此贴子已经被作者于2015-12-12 21:53编辑过]

2015-12-12 21:42
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
以下是引用hellovfp在2015-12-12 20:27:58的发言:

呵.呵,还有这么多漏洞,吓得楼主一哆嗦,饭都没吃好就回去玩捉虫游戏了。。

其实更多的是兴奋,因为可以有进步的机会嘛。当然也有尴尬,毕竟我自己下午测试的时候你们说的问题我都没考虑到
2015-12-12 21:59
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 16楼 武伟
当然要用循环,因为你并不知道堵塞在输入缓冲区中的非数字字符到底有多少个。这不是有些人推荐那种吸收一个字符的机制就可以解决的!

授人以渔,不授人以鱼。
2015-12-12 22:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你的大虫是前面所说的那两个,是整个程序设计方面的缺陷,最早的时候就预见一定会这样,不然无缘无故跟你谈二进制文件和文本文件的概念干嘛,真当我话痨啊?

授人以渔,不授人以鱼。
2015-12-12 22:06
武伟
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:506
专家分:2638
注 册:2015-7-23
收藏
得分:0 
我能看懂T版你指出的4楼的问题,就是在名字中间加了一个空格,然后内容就又错乱了……
但是7楼的问题有点看不懂
以下是引用TonyDeng在2015-12-12 19:41:21的发言:


还有更大的虫子:在没有导入外部文件的时候,直接用1输入数据,然后用a导出,哈哈,好看了……

你是说导出的话直接把以前的记录都给覆盖掉了,对吗?
2015-12-12 22:18
快速回复:(5)C语言问题之人员管理系统
数据加载中...
 
   



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

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