gpt4 book ai didi

c - strncmp 实际上是做什么的?

转载 作者:行者123 更新时间:2023-12-04 07:15:33 28 4
gpt4 key购买 nike

我尝试创建我自己的学校项目所需的 strncmp 函数,我运行使用相同 srcmp 函数的代码,但提供了我想要比较的 ASCII 代码的限制大小:
编码:

#include <stdio.h>
int strncmp(char *s1, char *s2, unsigned int n)
{
int i;
int diff;

i = 0;
diff = 0;
while ((s1[i] != '\0' || s2[i] != '\0') && (unsigned)i < n)
{
diff = s1[i] - s2[i];
if (diff != 0)
{
break ;
}
i++;
}
return (diff);
}
int main(){
char s11[] = "abcs";
char s12[] = "zzfs";
unsigned int p = 3;
printf("%d", strncmp(s11, s12, p));
}
输出 :
-22
它应该比较 3 个字符,而不仅仅是第一个,对吗?
我没有在 MAN 中得到这个想法,我是初学者,所以你知道。
谢谢你的帮助!

最佳答案

What does strncmp actually do?

strncmp比较字符串中的前两个字符。 (当比较字符时,它使用它们的值作为 unsigned char ,即使它们通过指针传递给 char 。)如果字符不同或者是空字符:
  • 如果第一个字符串中的字符大于第二个字符串中的字符,则 strncmp返回一个正值。
  • 如果第一个小于第二个,strncmp返回负值。
  • 否则(字符都是空字符),strncmp返回零。

  • 如果字符没有不同,也不是空字符, strncmp继续以相同的方式比较以下字符,直到 n对进行了比较。如果在 n之后没有发现差异已比较, strncmp返回零。 strncmp 的一些实现可能会返回不同的两个字符之间的有符号差异,但这不是 C 标准所要求的。 strncmp可以简单地为“大于”和“小于”返回 +1 和 -1,或者可以使用其他正值和负值。

    关于c - strncmp 实际上是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68795333/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com