| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1278 人关注过本帖
标题:致缘吇弹版主
取消只看楼主 加入收藏
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
结帖率:100%
收藏
 问题点数:0 回复次数:2 
致缘吇弹版主

缘吇弹版主,你好。今天在你BLOG里发现一个程序有BUG。程序如copy如下:

[开源] 模 拟 密 码 输 入
/* C模拟密码输入 出自我的Blog: 缘吇弹基地*/

//感觉之前的操作比较麻烦,改良一下:
#include "stdio.h"
int password(char *p){
int i=1;
while(i){
p[i]=getch();
if(p[i]==13) /*回车确定*/
break;
else if(p[i]==8){ /*退格清除*/
printf("\b \b");
i--;continue;}
else
printf("*"); /*设置passwordchar*/
i++;}
return 0;
}


/*主函数调用示例*/
int main(void){
int i=1;
char p[10]; /*设置密码存储数组及密码长度*/
password(p); /*调用password*/

/**********密码输出**********/
printf("\nYour password is:");
while(i){
printf("%c",p[i]);
if(p[i]==13) break;
i++;}
/****************************/

getche();
return 0;
}
BUG描述:运行时,如果第一次输入就是退格,你的i将自减为0,continue后while(i)为假,故而return 0返回主函数。由于数组p里没有13这个元素,所以输出会一直执行下去,直到遇到’\0’或遇到一个垃圾数据’\n’或’\0’为止。
虽然这是一个小问题,也许您没有太在意。但我觉得,对待任何程序都应该有一种严谨的态度,因为它是一种科学。
鄙人拙见,多多包涵。如有不对之处还望指出。


随心

2007年10月30日9:58:44

[此贴子已经被作者于2007-11-2 10:04:04编辑过]

收到的鲜花
  • 缘吇弹2008-02-03 15:55 送鲜花  5朵   附言:鼓励
搜索更多相关主题的帖子: BUG 版主 int BLOG 
2007-10-30 10:21
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
缘版不知是没看到还是生气了。

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2007-11-02 10:05
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
哇,还给我五个铜板

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-02-10 11:37
快速回复:致缘吇弹版主
数据加载中...
 
   



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

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