【问题标题】:string returned from strstr function is not the same as the the string [duplicate]从 strstr 函数返回的字符串与字符串不同 [重复]
【发布时间】:2021-01-04 12:03:54
【问题描述】:

所以我有了这个程序。它应该打印出来,因为 ret 是“Point”,只是我从 strstr 得到它,并且我将它与字符串“Point”进行比较。出于某种神秘的原因,它们不是相同的字符串。到底是怎么回事?代码如下:

#include <stdio.h>
#include <string.h>
#include <strings.h>

int main () {
   char *ret;

   ret = strstr("TutorialsPoint", "Point");
   
   if (strcmp(ret,"Point")) {
       printf("Strings are equal\n");
   } else {
       printf("strings are not equal\n");
   }

   printf("The substring is: %s\n", ret);
   
   return(0);
}

【问题讨论】:

  • 你读过man page for strcmp吗?两个字符串相等时返回什么?
  • 这能回答你的问题吗? Comparing two strings in C?
  • @costaparas 很好。 strcmp() 的返回值是反常的,对于没有 C 经验的初学者来说有点混乱。 而且这样的错误即使对于有经验的开发人员来说也很难发现。
  • @AndrewHenle Stack Overflow 不能替代阅读任何似乎没有达到您期望的库函数的文档。
  • @AndrewHenle 告诉某人文档存在并不是“废话”。文档是了解您使用的工具的一个很好的起点。如果这没有帮助,那么联系 SO 也很好。

标签: c strcmp strstr


【解决方案1】:

strcmp 如果字符串相等则返回 0:你应该写:

if(strcmp(ret, "Point") == 0){
    printf("equal");
}
else{
    printf("not equal");
}

【讨论】:

  • 带牙套会更好
猜你喜欢
  • 2016-07-13
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
相关资源
最近更新 更多