【发布时间】: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 也很好。