This question already has answers here:
How do I properly compare strings?
                                
                                    (8个答案)
                                
                        
                                去年关闭。
            
                    
我正在研究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条件

最佳答案

将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");
    }
}

关于c - cs50 Pset2:Crack-帮助我了解“==”的某些内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54440975/

10-11 21:58