今天在写学生管理系统的时候被密码输入这块卡住
在网上找到了输入密码时,不明文显示,用✳替代显示的方法,但是输入完以后怎么都进入不了下一步(一些文件操作,需要比较文件中的字符串与输入的字符数组内容是否相等)。
查了几遍代码结构也没问题,用printf测试发现只到了读取文件操作成功那里,没有执行下面的while,而是去执行了while执行失败的地方。
而且密码以正常字符串的形式输入的话执行没有问题,那错误就一定是出在了改掉的这部分。
我想着应该是字符和字符串的问题叭……
我又去网上搜这两者的转换问题,搜到的都是两者的区别
我冰封的记忆再次被重启
因为字符串和char型数组长度不同啊啊啊啊啊!!!!!
字符串在末尾处有‘\0’
char型数组没有!
就这个一区别!
于是我把密码数组最后一个数组元素赋值成了'\0',这下程序就成功运行啦~~~~
时间长了不回顾真的会忘光/(ㄒoㄒ)/~
……
printf("\n请输入用户名:");
scanf( "%s", &ac );
FILE *fp;
printf("\n请输入密码:");
while(x<6 && c!=13)
{
c=getch();
if(c!=13)
putchar('*');
pw[x++]=c;
}
pw[6]='\0';
x=0;
……