所以我有这个(不是完整的代码)
char list[1000][10];
strcpy(list[0],"ab");
printf("%d\n",strcmp(list[0],"ab"));
并且 strcmp 返回 0。有人可以解释为什么会这样吗?
提前致谢。
所以我有这个(不是完整的代码)
char list[1000][10];
strcpy(list[0],"ab");
printf("%d\n",strcmp(list[0],"ab"));
并且 strcmp 返回 0。有人可以解释为什么会这样吗?
提前致谢。
如果在这种情况下包含“ab”,该strcmp
方法将返回 0 。list[0]
它返回:
返回一个整数值,表示字符串之间的关系:
零值表示两个字符串相等。
大于零的值表示第一个不匹配的字符在 str1 中的值大于在 str2 中的值;小于零的值表示相反。
strmp
当字符串匹配时返回 0。除非我遗漏了什么,否则它的行为符合预期。
strcmp()
对字符串进行序数比较,而不是相等测试。返回值 0 表示字符串相等!
如果要测试是否相等,请使用此模式:
if (strcmp(s, "ab") == 0) {
// strings are equal
}
因为strcpy()
是将“右”字符串复制到“左”字符串的函数。所以,在 之后strcpy(list[0],"ab");
, 的内容list[0]
是“ab”。然后,它们是相等的字符串,strcmp 返回 0,表示“相等”。
你的字符串是匹配的,这就是为什么它返回 0 这样做......
char list[1000][10];
strcpy(list[0],"ab");
if(strcmp(list[0],"ab")==0)
printf("Matched\n",);
正如丹尼尔所说,返回值为 0。
返回一个整数值,表示字符串之间的关系:零值表示两个字符串中比较的字符形成相同的字符串。大于零的值表示第一个不匹配的字符在 str1 中的值大于在 str2 中的值;小于零的值表示相反。
您还应该使用strncmp
而不是使用strcmp
.