在C编程中使用等号来比较字符串

时间:2018-05-04 06:35:38

标签: c string strcmp

#include<stdio.h>

int main()
{
    char str1[] = "ComputerProgram";
    char str2[] = "ComputerProgram";
    (str1==str2)? (printf("Equal")):(printf("unequal"));
    return 0;
}

根据我的答案应该是平等的,但它是不平等的。 但是,如果我使用strcmp(str1,str2) == 0,答案就是平等的。它在==案例中如何运作?此外,我尝试打印srt1str2的ASCII值,它们的结果不同。所以我认为这可能就是原因。现在的问题是==如何处理字符串?

2 个答案:

答案 0 :(得分:3)

当你比较它们时,你的数组str1str2会衰减指向它们的第一个元素。也就是说,你比较两个永远不会相等的指针。

简而言之,您的比较str1 == str2等于&str1[0] == &str2[0]

strcmp的不同之处在于,它将第一个字符串中的每个字符与另一个字符串中的每个对应字符进行比较。

答案 1 :(得分:0)

str1==str2正在比较字符串的地址,而不是字符串本身。strcmp将转到这些地址并比较所有字符。