第一个问题,你的代码在ch=getch()之前就给password[i]赋值,就会造成你输入6个字符后
实际长度为7,这实际上已经数组越界了,再加上最后的结束符,越界2个字节。
所以,把先把password[i]=ch; 这句移到这里
if(ch!='\r'&&ch!='\b'){
password[i]=ch;
printf("*");
i++;
}
第二个问题,如果你要输入6位字符,那么字符数组应该定义为
char password[7];
char passwordsure[7];
因为要多1个字节存储结束符'\0',否则输满6个字符的情况下,再
password[i]='\0';
这会触发数组越界的错误,就算你的编译器没有触发这个错误,这也是不对的。
ch定义后,在while循环中,未输入值就引用,是错误的。