📅  最后修改于: 2023-12-03 15:29:43.347000             🧑  作者: Mango
在C语言中字符串是以字符数组的形式出现的,而字符串的比较也是需要比较数组的各个元素,因此需要特定的函数来比较两个字符串。在C语言中,字符串比较函数有三种:
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
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
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()函数的返回值是一个整数,如果字符串相等,返回值为0。如果字符串不相等,返回值小于0表示str1小于str2,返回值大于0表示str1大于str2。而strcoll()函数则返回一个类似于strcmp()函数的值,但这个值是根据语言环境而定的。