我有这个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。
问题是,当我使用正确的凭据时,它会显示“登录不正确”。
为什么会这样?
答案 0 :(得分:2)
我希望它会有所帮助,
在C中,您必须使用strcmp或strncmp来比较字符串。它就像Java中的String.Equal。
如果你正在比较int在堆栈内存中它是可以的,因为它是(在内存中)自己编写的,但是如果变量在分配的内存或数组中,则每个元素都有分配的内存中的内容的地址。由于内容的两个地址不同,您必须使用函数来比较内容本身。
祝你好运!