📜  c string equil - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:29:43.347000             🧑  作者: Mango

C字符串比较函数

在C语言中字符串是以字符数组的形式出现的,而字符串的比较也是需要比较数组的各个元素,因此需要特定的函数来比较两个字符串。在C语言中,字符串比较函数有三种:

  • strcmp():按字典顺序比较两个字符串
  • strncmp():比较两个字符串的前N个字符
  • strcoll():根据本地化特征比较两个字符串
1. strcmp()

strcmp()函数可以按照字典顺序比较两个字符串,例如:

#include <stdio.h>
#include <string.h>

int main ()
{
   char str1[15];
   char str2[15];
   int ret;

   strcpy(str1, "runoob");
   strcpy(str2, "google");

   ret = strcmp(str1, str2);

   if(ret < 0)
   {
      printf("str1 小于 str2");
   }
   else if(ret > 0) 
   {
      printf("str1 大于 str2");
   }
   else 
   {
      printf("str1 等于 str2");
   }
   
   return(0);
}

输出:

str1 小于 str2
2. strncmp()

strcmp()函数是比较两个字符串的全部字符,如果只需要比较字符串的前几个字符,可以使用strncmp()函数,例如:

#include <stdio.h>
#include <string.h>

int main ()
{
   char str1[15];
   char str2[15];
   int ret;

   strcpy(str1, "runoob");
   strcpy(str2, "runAPP");

   ret = strncmp(str1, str2, 3);

   if(ret < 0)
   {
      printf("str1 小于 str2");
   }
   else if(ret > 0) 
   {
      printf("str1 大于 str2");
   }
   else 
   {
      printf("str1 等于 str2");
   }
   
   return(0);
}

输出:

str1 等于 str2
3. strcoll()

strcoll()函数可以根据本地化特征比较两个字符串,例如:

#include <locale.h>
#include <stdio.h>
#include <string.h>

int main ()
{
   setlocale(LC_COLLATE, "en_US.UTF-8");

   char str1[15];
   char str2[15];
   int ret;

   strcpy(str1, "runoob");
   strcpy(str2, "runAPP");

   ret = strcoll(str1, str2);

   if(ret < 0)
   {
      printf("str1 小于 str2");
   }
   else if(ret > 0) 
   {
      printf("str1 大于 str2");
   }
   else 
   {
      printf("str1 等于 str2");
   }
   
   return(0);
}

输出:

str1 大于 str2

总结:

  • strcmp():按字典顺序比较两个字符串
  • strncmp():比较两个字符串的前N个字符
  • strcoll():根据本地化特征比较两个字符串

需要特别注意的是,strcmp()和strncmp()函数的返回值是一个整数,如果字符串相等,返回值为0。如果字符串不相等,返回值小于0表示str1小于str2,返回值大于0表示str1大于str2。而strcoll()函数则返回一个类似于strcmp()函数的值,但这个值是根据语言环境而定的。