我刚刚开始学习 c,我想尝试 strcmp 函数,但如果我运行它,它总是给我结果“1”。我输入什么字符串并不重要。由于第一个字符串比第二个字符串短,因此我期望结果为“-1”。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char array1[]="na";
char array2[]="kskkjnkjnknjd";
int i;
i= strcmp(array1,array2);
printf(" %d", i);
return 0;
}
我也已经尝试摆脱 i 变量,只写“printf(" %d", strcmp(array1, array2)); 并用 %u 替换 %d,但也不起作用。我已经搜索过网络并尝试自己解决,可能只是一个简单的错误,如果有人能提供帮助,我会很高兴。:)
strcmp
在 libc 中几乎总是使用以下等效项进行编码:
int strcmp(char *s1, char *s2)
{
for(; *s1 && *s2; s1++, s2++)
{
int res = *s1-*s2;
if (res)
return res;
}
return *s1-*s2;
}
它返回第一个不同的比较字符之间的差异,这确保结果符合两个字符串关系==
<
>
.
当字符串长度不同时,返回的是字符串之间的差异\0
较短字符串的字符串结尾和另一个字符串的对应字符的位置。因此结果也应反映长度差异。
不要指望 0、1 和 -1。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)