C代码不起作用

时间:2017-04-20 23:42:48

标签: c linux

我有这个C代码

#include <stdio.h>
int main( ) {
    char Username[100];
    char Password[100];
    printf("discl0sed 0.1 discl0sed tty1\ndiscl0sed login: ");
    scanf("%s", Username);
    printf("Password: ");
    scanf("%s", Password);
    if (Username == "root" && Password == "!DISCL0SEDor1=1--")
    {
        return 0;
    }
    else
    {
        while (1 == 1)
        {
            printf("Login incorrect\ndiscl0sed login: ");
            scanf("%s", Username);
            printf("Password: ");
            scanf("%s", Password);
            printf("%s:%s", Username, Password);
            if (Username == "root" && Password == "!DISCL0SEDor1=1--")
            {
                break;
            }
            else
            {
                continue;
            }
        }
    }
}

在Linux中镜像tty shell。 问题是,当我使用正确的凭据时,它会显示“登录不正确”。

为什么会这样?

1 个答案:

答案 0 :(得分:2)

我希望它会有所帮助,

在C中,您必须使用strcmp或strncmp来比较字符串。它就像Java中的String.Equal。

如果你正在比较int在堆栈内存中它是可以的,因为它是(在内存中)自己编写的,但是如果变量在分配的内存或数组中,则每个元素都有分配的内存中的内容的地址。由于内容的两个地址不同,您必须使用函数来比较内容本身。

祝你好运!