什么是"strcmp"中使用的比较算法--C编程?

Sah*_*hal 2 c

任何人都可以解释strcmp中用什么算法来比较C编程中的两个字符串?

我不明白这个返回值,它使用任何算法,如' Levenstien算法 '来找出两个字符串之间的距离......

Dav*_*son 6

标准C库的GNU实现glibc是开源的,如果你很好奇,你可以阅读strcmp.c.没有多少.这里是:

/* Compare S1 and S2, returning less than, equal to or
   greater than zero if S1 is lexicographically less than,
   equal to or greater than S2.  */
int strcmp (const char *p1, const char *p2)
{
  register const unsigned char *s1 = (const unsigned char *) p1;
  register const unsigned char *s2 = (const unsigned char *) p2;
  unsigned reg_char c1, c2;

  do
    {
      c1 = (unsigned char) *s1++;
      c2 = (unsigned char) *s2++;
      if (c1 == '\0')
        return c1 - c2;
    }
  while (c1 == c2);

  return c1 - c2;
}
Run Code Online (Sandbox Code Playgroud)