为什么这个简单的C程序不能运行?

为什么这个简单的C程序不能运行?,c,string,if-statement,C,String,If Statement,此代码将不会运行。谁能告诉我为什么 #include <stdio.h> #include <string.h> main (){ char user[7]; printf("Username\n"); scanf("%s",user); if(user == 'admin'){ printf("Hello World"); }else{ printf("Bad"); } retu

此代码将不会运行。谁能告诉我为什么

#include <stdio.h>
#include <string.h>
main (){
    char user[7];  
    printf("Username\n");
    scanf("%s",user);
    if(user == 'admin'){
        printf("Hello World");
    }else{
        printf("Bad");
    }
    return(0);
}

这是一个有效的例子。您需要使用来比较字符串。如果字符串相等,strcmp返回0。 如果已知最大输入长度,则还应在scanf中使用长度说明符或列出的建议之一,以防止缓冲区溢出

#include <stdio.h>
#include <string.h>

int main(int argc, char* argv)
{
    char user[7];  
    printf("Username:\n");
    scanf("%6s", user);

    if(!strcmp(user, "admin"))
    {
        printf("Hello World");
    }
    else
    {
        printf("Bad");
    }

    return 0;
}

这不起作用,因为您以错误的方式比较两个字符串。你需要使用。检查答案以查看strcmp在C中返回的内容

要使程序正常工作,请更改行

if (user == 'admin')

此外,在极少数情况下,使用scanf可能有点危险。我更喜欢使用FGET作为字符串。要使用FGET,请执行以下操作:


如果user==“admin”错误。使用strcmp。顺便说一句,在您的情况下,它是int mainvoid。但是,此代码将不会运行。谁能告诉我为什么?是离题的。您无法比较Javascript或Java中的内容。使用%s这样的功能可以很好地邀请用户输入6个以上的字符,然后把一切都搞糟。@PopescuAlexandruConstantin实际上,这里的情况与Java相同
if (strcmp (user, "admin") == 0)
fgets (user, sizeof (user), stdin);