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

时间:2016-02-06 10:41:33

标签: 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");
    }
    return(0);
}

2 个答案:

答案 0 :(得分:1)

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

#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;
}

答案 1 :(得分:0)

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

要使您的计划有效,请更改

if (user == 'admin')

if (strcmp (user, "admin") == 0)

此外,在极少数情况下,使用scanf可能会有点危险。我更喜欢将fgets用于字符串。要使用fgets,请执行:

fgets (user, sizeof (user), stdin);