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

运行效果:

运行效果图

点赞、收藏+关注获取更多精彩内容!

注:鉴于作者能力有限,文中错误与未尽事宜在所难免,恳请读者批评指正。

代码示例图

举报
评论 0