我是新来的C,我正在做我的第一个“体面”的计划。我的代码有问题。

char username[] = "root";
char usernametry[10];

scanf("%s",usernametry);

if (usernametry == username)
{
    printf("Welcome ROOT user\n");
}
else
{
    printf("Try again\n");
}

每当我执行我的程序时,一切正常;但是,当我尝试登录并键入root作为用户名时,它会返回Try again。有人能告诉我为什么会这样吗?我对C很陌生,所以我为自己缺乏C知识而道歉。

最佳答案

usernametryusernamechar类型的数组当您执行usernametry == username时,您不会比较两个字符串是否相等,而是比较char中第一个usernametry的内存地址与char中第一个username的内存地址为了比较两个字符串是否相等,应该使用strcmp。另外,考虑将%s中的scanf替换为%9s以便usernametry永远不会超过9chars(这可能是缓冲区溢出,因为第10个char需要'\0',即用于终止C样式字符串的空字符)。

关于c - 麻烦C else,如果和scanf,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34437766/

10-09 12:30