cs50 Pset2:Crack-帮助我了解“ ==”

时间:2019-01-30 12:46:03

标签: c cs50

我正在研究Pset2:破解,但我认为这里的背景并不重要。

我在crypt()函数的输出中遇到了一些问题,并且我一直试图找出问题所在-我认为这是因为crypt()输出了一个指针吗?我距离CS50只有2周的时间,并且已经阅读了一些指针。我了解它实际上并没有存储我要查找的数据,而是在内存中存储了数据的地址线,但是这种知识对我来说并不能解释为什么我不能使用crypt()的输出使用均衡器==

无论如何,对于下面的代码或进一步阅读的任何帮助,我们将不胜感激。

int main(int argc, string argv[])
{
    string key = "f";
    string salt = "50";
    string a = crypt(key, salt);

    string x = "50AWs/7oe6pkA";   // this is the hash output from crypt(f, 50)

    if(a == x)
    {
        printf("true\n");
    }
}

我希望输出为“ true”,但(a == x)没有通过if条件

1 个答案:

答案 0 :(得分:0)

将C字符串(char *)与 strcmp 进行比较,否则您只比较两个指针,在这里它们就不能相等

int main(int argc, string argv[])
{
    string key = "f";
    string salt = "50";
    string a = crypt(key, salt);

    string x = "50AWs/7oe6pkA";   // this is the hash output from crypt(f, 50)

    if(!strcmp(a, x))
    {
        printf("true\n");
    }
}