【问题标题】:Why my C code says that two strings are not equal although they look like so? [duplicate]为什么我的 C 代码说两个字符串不相等,尽管它们看起来像这样? [复制]
【发布时间】:2019-09-04 08:01:51
【问题描述】:

我正在尝试解决由这个问题引起的问题。我为显示问题而编写的代码如下所示。我使用 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】:

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

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

    【讨论】:

    • 我忘记了 C 字符串实际上是指针。谢谢你提醒我。
    猜你喜欢
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2017-07-31
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多