按照ASCII码顺序比较两个数组中的字符串,这该怎么比较大小?

2024-11-19 11:28:58
推荐回答(1个)
回答(1):

  函数简介
  原型:extern int strcmp(const char *s1,const char * s2);
  所在头文件:string.h
  功能:比较字符串s1和s2。
  一般形式:strcmp(字符串1,字符串2)
  说明:
  当s1  当s1==s2时,返回值=0
  当s1>s2时,返回值>0
  即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
  "A"<"B" "a">"A" "computer">"compare"
  特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。
  一例实现代码:
  #include
  #include
  #undef strcmp
  int strcmp (p1, p2)
  {
  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;
  }
  libc_hidden_builtin_def (strcmp)
编辑本段函数源码
  int __cdecl strcmp (
  const char * src,
  const char * dst
  )
  {
  int ret = 0 ;
  while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst&&*src)
  ++src, ++dst;
  if ( ret < 0 )
  ret = -1 ;
  else if ( ret > 0 )
  ret = 1 ;
  return( ret );
  }