无论输入什么包括666 密码都是错的❌😣😭
那需要怎么更改了?
求专家指导
问题出在fgets这个函数,你用这个函数从输入缓冲区提取20个字符为atp赋值,那就会把你输入的回车符也算进去,比如你输入666,最终atp数组里面就有四个字符,三个'6'加一个回车'\n'。
你可以换成用scanf输入就行了。
再者,用strcmp判断的时候,别用”666“,直接用你定义的密码数组password作为参数。
int main()
{
char password[20] = {'6', '6', '6'};
char atp[20] = {};
int i = 0;
for (i = 0; i < 3; ++i)
{
printf("输入密码\n");
scanf("%s", &atp);
if (!strcmp(atp, password))
{
printf("登陆成功\n");
break;
}
else
{
printf("密码错误,你还有%d机会\n", 2 - i);
}
}
if (i == 3)
{
printf("你的卡已被冻结\n");
}
return 0;
}
把 if (strcmp(atp, "666") == 0) 改成 if (strcmp(atp, "666") > 0)
666,你看作字符串的话,你需要这样写 ="666";
看作字符的话这样写,={'6','6','6'};