【问题标题】:comparing strings using equality sign in C programming [duplicate]在C编程中使用等号比较字符串[重复]
【发布时间】:2018-05-04 06:35:38
【问题描述】:
#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 值,结果它们不同。所以我认为这可能是原因。现在的问题是== 是如何处理字符串的?

【问题讨论】:

  • 字符串比较需要使用函数strcmp

标签: c string strcmp


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢..刚刚检查了地址,是的,它们不同..非常感谢
  • 您可以打开C tag wiki,向下滚动到常见问题解答,找到名为字符串的部分,找到相关的规范重复项,然后关闭投票,而不是重复回答常见的常见问题解答。
【解决方案2】:

str1==str2 是比较字符串的地址,而不是字符串本身。strcmp 会去这些地址并比较所有字符。

【讨论】:

  • @Michael Walz 哦,我的意思是 strcmp 会修复它
猜你喜欢
  • 2018-07-09
  • 1970-01-01
  • 2015-01-05
  • 2011-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多