缘吇弹版主,你好。今天在你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编辑过]