1

所以我有这个(不是完整的代码)

char list[1000][10];

strcpy(list[0],"ab");

printf("%d\n",strcmp(list[0],"ab"));

并且 strcmp 返回 0。有人可以解释为什么会这样吗?

提前致谢。

4

6 回答 6

6

如果在这种情况下包含“ab”,该strcmp方法将返回 0 。list[0]

它返回:

返回一个整数值,表示字符串之间的关系:

零值表示两个字符串相等。

大于零的值表示第一个不匹配的字符在 str1 中的值大于在 str2 中的值;小于零的值表示相反。

于 2013-08-23T21:46:57.457 回答
0

strmp当字符串匹配时返回 0。除非我遗漏了什么,否则它的行为符合预期。

见:http ://www.tutorialspoint.com/ansi_c/c_strcmp.htm

于 2013-08-23T21:47:02.283 回答
0

strcmp()对字符串进行序数比较,而不是相等测试。返回值 0 表示字符串相等!

如果要测试是否相等,请使用此模式:

if (strcmp(s, "ab") == 0) {
    // strings are equal
}
于 2013-08-23T21:48:30.583 回答
0

因为strcpy()是将“右”字符串复制到“左”字符串的函数。所以,在 之后strcpy(list[0],"ab");, 的内容list[0]是“ab”。然后,它们是相等的字符串,strcmp 返回 0,表示“相等”。

于 2013-08-23T21:49:06.310 回答
0

你的字符串是匹配的,这就是为什么它返回 0 这样做......

    char list[1000][10];

    strcpy(list[0],"ab");
    if(strcmp(list[0],"ab")==0)
         printf("Matched\n",);
于 2013-08-23T21:49:36.027 回答
0

正如丹尼尔所说,返回值为 0。

取自cplusplus.com

返回一个整数值,表示字符串之间的关系:零值表示两个字符串中比较的字符形成相同的字符串。大于零的值表示第一个不匹配的字符在 str1 中的值大于在 str2 中的值;小于零的值表示相反。

您还应该使用strncmp而不是使用strcmp.

于 2013-08-23T21:49:44.563 回答