为什么我的C代码说两个字符串不相等,尽管它们看起来像这样? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我正在努力解决这个问题引起的问题。我写的用于显示问题的代码可以在下面看到。我使用strcpy将一个全局字符串复制到用memset创建的字符串。虽然它们的内容看起来是一样的,但结果表明它们不是;因为最后的if语句没有执行。

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define MSG "mystr"

int main() {
  char buffer[6];
  memset (buffer, 0x00, 6);
  strcpy(buffer,MSG);
  printf("Buffer is %s.\n", buffer);
  printf("MSG is %s.\n", MSG);
  if (buffer == MSG) printf("True \n");
  return 0;
}

结果是;

Buffer is mystr.
MSG is mystr.

如果你告诉我我做错了什么,我将不胜感激。

c string memset
1个回答
4
投票

C语言中的字符串等式检查不是这样做的!你正在做的检查是它比较两个指针指向的内存中的地址,如果它们相等,它将返回true。在这种情况下,它们不是这样,它返回false。

你需要使用strcmp。 strcmp返回-1,0,1,具体取决于哪个比较字符串的值小于另一个。如果它们相等,它将返回0.你可以在这里阅读更多相关信息:strcmp

© www.soinside.com 2019 - 2024. All rights reserved.