C语言不区分大小写的字符串比较函数
总体概述:
上一篇我们介绍了字符串比较的几种方式。这一篇,我们介绍两个不区分大小写的字符串比较函数,并编写代码示例,函数分别为strcasecmp、strncasecmp。
函数语法:
strcasecmp函数语法:int strcasecmp(const char *s1, const char *s2);
strncasecmp函数语法:int strncasecmp(const char *s1, const char *s2, size_t n);
函数作用:
strcasecmp函数:对字符串s1和s2执行逐字节比较,忽略字符的大小写
strncasecmp函数:比较两个字符串s1和s2的前n个字节,忽略字符的大小写。
参数介绍:
strcasecmp函数参数介绍:
- 输入参数:s1 => 要比较的字符串1
- 输入参数:s2 => 要比较的字符串2
- 返回值:如果s1分别小于、匹配或大于s2,则返回一个小于、等于或大于0的整数。
strncasecmp函数参数介绍:
- 输入参数:s1 => 要比较的字符串1
- 输入参数:s2 => 要比较的字符串2
- 输入参数:n => 要比较的字符串长度。
- 返回值:如果s1的前n个字节分别小于、匹配或大于s2的前n个字节,则返回一个小于、等于或大于零的整数。
代码示例:
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
const char *s1 = "string case compare demo";
const char *s2 = "STRING CASE compare demo";
const char *s3 = "string case";
size_t len1 = strlen(s1);
size_t len3 = strlen(s3);
if (strcasecmp(s1, s2) == 0)
printf("strcasecmp: s1 与 s2相匹配\n");
if (strncasecmp(s1, s2, len1) == 0)
printf("strncasecmp: s1的前%ld个字节与s2的前%ld个字节相匹配\n", \
len1, len1);
if (strcasecmp(s2, s3) != 0)
printf("strcasecmp: s1 与 s2不相匹配\n");
if (strncasecmp(s2, s3, len3) == 0)
printf("strncasecmp: s2的前%ld个字节与s3的前%ld个字节相匹配\n", \
len3, len3);
return 0;
}
使用方法:
$ mkdir ~/clanguage && cd ~/clanguage
$ touch string_casecmp.c 注:创建并拷贝代码到string_casecmp.c,保存退出。
$ gcc -o string_casecmp string_casecmp.c
$ ./string_casecmp
运行效果:
点赞、收藏+关注获取更多精彩内容!
注:鉴于作者能力有限,文中错误与未尽事宜在所难免,恳请读者批评指正。
请先 后发表评论~