看图 无论输入什么包括666 密码都是错的

img

无论输入什么包括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'};