int a = strncmp("zbcd", "abcd", 3); a = 1。为什么?

问题描述 投票:0回答:1

为什么当你将字符串而不是变量放在参数上时 strncmp 不起作用。

为什么在这种情况下a = 1:

int a = strncmp("zbcd", "abcd", 3);

在本例中 a = 25:

char *s1 = "zbcd";
char *s2 = "abcd";
int a = strncmp(s1, s2, 3);
c++ c pointers memory strncmp
1个回答
0
投票

两种情况下的行为都是完全有效的。

strncmp
的返回值为:

如果按字典顺序 lhs 出现在 rhs 之前,则为负值。
如果 lhs 和 rhs 比较相等,或者计数为零,则为零。 正值
如果 lhs 按字典顺序出现在 rhs 之后。

不保证正值为 1(或负值 -1)。

© www.soinside.com 2019 - 2024. All rights reserved.