C语言修行之函数篇(二)strcasecmp,strncasecmp —— 比较字符串字符

news/2025/1/16 18:49:52/

文章目录

    • 函数说明
    • 函数声明
    • 函数参数
    • 函数实现
    • 函数实例


函数说明

strcasecmp()函数对字符串s1和s2执行逐字节比较,忽略字符的大小写。如果发现s1分别小于、匹配或大于s2,则返回一个小于、等于或大于0的整数。


函数声明

#include <strings.h>
int strcasecmp(const char *s1, const char *s2);
int strncasecmp(const char *s1, const char *s2, size_t n);

函数参数

函数输入值:
s1 / s2 :对比字符串
n:对比个数

函数返回值:
strcasecmp()函数在忽略大小写后
如果发现si分别小于、匹配或大于s2,则返回一个小于、等于或大于零的整数。
(1)若参数s1和s2字符串相同则返回0
(2)若参数s1大于s2,则返回大于0的值
(3)若参数s1小于s2,则返回小于0的值


函数实现

int
strncasecmp(const char *s1, const char *s2, size_t nch)
{size_t          ii;int             res = -1;if (!s1) {if (!s2)return 0;return (-1);}if (!s2)return (1);for (ii = 0; (ii < nch) && *s1 && *s2; ii++, s1++, s2++) {res = (int) (tolower(*s1) - tolower(*s2));if (res != 0)break;}if (ii == nch) {s1--;s2--;}if (!*s1) {if (!*s2)return 0;return (-1);}if (!*s2)return (1);return (res);
}int
strcasecmp(const char *s1, const char *s2)
{return strncasecmp(s1, s2, 1000000);
}

函数实例

#include <ctype.h>
#include <string.h>/*
int
strncasecmp_test(const char *s1, const char *s2, size_t nch)
{size_t          ii;int             res = -1;if (!s1) {if (!s2)return 0;return (-1);}if (!s2)return (1);for (ii = 0; (ii < nch) && *s1 && *s2; ii++, s1++, s2++) {res = (int) (tolower(*s1) - tolower(*s2));if (res != 0)break;}if (ii == nch) {s1--;s2--;}if (!*s1) {if (!*s2)return 0;return (-1);}if (!*s2)return (1);return (res);
}int
strcasecmp_test(const char *s1, const char *s2)
{return strncasecmp_test(s1, s2, 1000000);
}
*/int main()
{int ret;char *a = "aBJbHIUb";char *b = "AbjBh";
//    ret = strncasecmp_test(a, b, 3);ret = strncasecmp(a, b, 3);printf("ret = %d\n", ret);return 0;
}

输出结果:

strcasecmp优化后的函数 strncasecmp_test
当*a = “aBJbHIUb”,b = “AbjBh”, 返回值:0
a = “aBJbHIUb”,b = “Ab”,返回值:1
a = “aB”,b = “AbjBh”, 返回值:-1
a =“aB”,b = “Ab”, 返回值:0
a = “aBJbHIUb”,b = “Ah”, 返回值:-6
a = “ah”,*b= “AbjBh”, 返回值:6

使用string.h中的strcasecmp
当*a = “aBJbHIUb”,b = “AbjBh”, 返回值:0
a =“aBJbHIUb”,b = “Ab”,返回值:106
a = “aB”,b = “AbjBh”, 返回值:-106
a =“aB”,b = “Ab”, 返回值:0
a = “aBJbHIUb”,b = “Ah”, 返回值:-6
a = “ah”,*b= “AbjBh”, 返回值:6


http://www.ppmy.cn/news/1187108.html

相关文章

企业文件防泄密方法

企业文件防泄密方法 安企神数据防泄密系统下载使用 企业文件是企业的核心资产&#xff0c;其中可能包含大量的敏感信息&#xff0c;如客户资料、产品配方、财务数据等。一旦这些文件泄露&#xff0c;可能会给企业带来不可估量的损失。 然而&#xff0c;企业文件防泄密是确保…

Linux curl命令最全详解

https://blog.csdn.net/angle_chen123/article/details/120675472

Android---底层剖析 Window、Activity、View 三者关系

对于一个 Android 工程师来讲&#xff0c;或多或少都听说过 Window 的概念&#xff0c;并且隐约感受到它在 Activity 和 View 之间应该发挥着某种连接的作用。但如果要说出这三者之间的关系&#xff0c;多数 android 工程师都不知道从何下手。 Activity 的 setContentView Ac…

unboundlocalerror: local variable ‘××ב referenced before assignment

发现我的代码 if self.flag valid:us self.user_valid_list[idx] elif self.flag test:us self.user_test_list[idx]info sample(us)如果我的flag不是train和valid中的值&#xff0c;那么就会出现问题&#xff0c;因此再加上一个else处理这种情况 if self.flag valid:u…

三种前端埋点方式

什么是埋点 埋点是数据采集领域&#xff08;尤其是用户行为数据采集领域&#xff09;的术语&#xff0c;指的是针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。比如用户某个icon点击次数、观看某个视频的时长等等。 我们可以知道埋点实际上是对特定事件或…

seccomp学习 (1)

文章目录 0x01. seccomp规则添加原理A. 默认规则B. 自定义规则 0x02. seccomp沙箱“指令”格式实例Task 01Task 02 0x03. 总结 今天打了ACTF-2023&#xff0c;惊呼已经不认识seccomp了&#xff0c;在被一道盲打题折磨了一整天之后&#xff0c;实在是不想面向题目高强度学习了。…

Google Archive Patch 基础应用代码记录

项目地址 Google Archive Patch 前置 <!-- 差量应用模块 --> <dependency><groupId>com.google.archivepatcher</groupId><artifactId>archive-patch-applier</artifactId><version>1.0.4</version><scope>test</…

Python+pytest+request 接口自动化测试!

一、环境配置 1.安装python3 brew update brew install pyenv 然后在 .bash_profile 文件中添加 eval “$(pyenv init -)” pyenv install 3.5.3 -v pyenv rehash 安装完成后&#xff0c;更新数据库 pyenv versions 查看目前系统已安装的 Python 版本 pyenv global 3.5…