我是新来的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知识而道歉。 最佳答案
usernametry
和username
是char
类型的数组当您执行usernametry == username
时,您不会比较两个字符串是否相等,而是比较char
中第一个usernametry
的内存地址与char
中第一个username
的内存地址为了比较两个字符串是否相等,应该使用strcmp
。另外,考虑将%s
中的scanf
替换为%9s
以便usernametry
永远不会超过9char
s(这可能是缓冲区溢出,因为第10个char
需要'\0'
,即用于终止C样式字符串的空字符)。
关于c - 麻烦C else,如果和scanf,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34437766/