首页 热点资讯 义务教育 高等教育 出国留学 考研考公

C语言 strcmp

发布网友 发布时间:2022-04-23 06:15

我来回答

2个回答

热心网友 时间:2023-10-25 04:39

经过

    char *s1="ABCDEF", *s2="aB";
    s1++; s2++;

这两条语句后,现在 s1 为"BCDEF",s2 为"B"。

strcmp() 函数功能如下:

strcmp(s1, s2):若 s1==s2,则返回值为零;若 s1<s2,则返回值为某个负数;若 s1>s2,则返回值为某个正数。

大致相当于这段代码(来源 glibc):

int
STRCMP (const char *p1, const char *p2)
{
  const unsigned char *s1 = (const unsigned char *) p1;
  const unsigned char *s2 = (const unsigned char *) p2;
  unsigned char c1, c2;
  do
    {
      c1 = (unsigned char) *s1++;
      c2 = (unsigned char) *s2++;
      if (c1 == '\0')
    return c1 - c2;
    }
  while (c1 == c2);
  return c1 - c2;
}

在这个例子中,进入循环,首先比较第零个字符,发现'B'与'B'相等,继续比较第一个字符,'C'和 0('\0')不相等,跳出循环,最终输出结果为'C'-0=67。

在某些环境下,strcmp() 函数遇到第一个不相等字符时,若 c1>c2 始终输出 1,若 c1<c2 始终输出 -1,若 c1==c2 始终输出 0,所以最终输出结果为 1。

热心网友 时间:2023-10-25 04:39

s1++; s2++;后,s1指向了"ABCDEF"中的B,s2指向了"aB"中B。strcmp比较的是两个字符串,这里就是"BCDEF"和"B",显然前者大于后者,所以输出是1而不是0。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com