#include<stdio.h>
int main()
{
char str1[] = "ComputerProgram";
char str2[] = "ComputerProgram";
(str1==str2)? (printf("Equal")):(printf("unequal"));
return 0;
}
根据我的答案应该是平等的,但它是不平等的。
但是,如果我使用strcmp(str1,str2) == 0
,答案就是平等的。它在==
案例中如何运作?此外,我尝试打印srt1
和str2
的ASCII值,它们的结果不同。所以我认为这可能就是原因。现在的问题是==
如何处理字符串?
答案 0 :(得分:3)
当你比较它们时,你的数组str1
和str2
会衰减指向它们的第一个元素。也就是说,你比较两个永远不会相等的指针。
简而言之,您的比较str1 == str2
等于&str1[0] == &str2[0]
。
strcmp
的不同之处在于,它将第一个字符串中的每个字符与另一个字符串中的每个对应字符进行比较。
答案 1 :(得分:0)
str1==str2
正在比较字符串的地址,而不是字符串本身。strcmp
将转到这些地址并比较所有字符。