
字符串比较函数-strcasecmp()和strncasecmp()
发布日期:2021-05-19 20:29:42
浏览次数:11
分类:精选文章
本文共 1582 字,大约阅读时间需要 5 分钟。
strcasecmp 和 strncasecmp 函数说明
经典的字符串比较函数 strcasecmp
和 strncasecmp
,它们分别用于进行不区分大小写的字符串比较。以下将详细介绍两者的实现原理和适用场景。
strcasecmp 函数说明
strcasecmp
函数用于比较两个字符串 s1
和 s2
,将大小写视为相同。比较过程中,自动忽略大小写差异,直到遇到大小写不同的字符或字符串末尾。
返回值
- 若
s1
和s2
字符串完全相同,返回0
。 - 若
s1
的长度大于s2
,返回大于0
的值。 - 若
s1
的长度小于s2
,返回小于0
的值。
###实现代码
#include#include static int strcasecmp(const char* s1, const char* s2) { char c1, c2; do { c1 = *s1++; c2 = *s2++; } while (c1 && c2 && tolower(c1) == tolower(c2)); return tolower(c1) - tolower(c2);}
###示例
#include#include #include int main(void) { int n = 4; char str1[] = "Acef"; char str2[] = "ACEFd"; printf("strcasecmp(str1, str2) = %d\n", strcasecmp(str1, str2)); return 0;}
strncasecmp 函数说明
strncasecmp
函数用于比较两个字符串 s1
和 s2
的前 n
个字符,不区分大小写。与 strcasecmp
不同,这个函数会在超过 n
个字符后停止比较。
返回值
- 若比较的
n
个字符完全相同,返回0
。 - 若
s1
的前n
个字符大于s2
识别的字符,返回大于0
的值。 - 若
s1
的前n
个字符小于s2
识别的字符,返回小于0
的值。
实现代码
#include#include int mystrncasecmp(const char* s1, const char* s2, int n) { int c1, c2; do { c1 = tolower(*s1++); c2 = tolower(*s2++); } while (--n > 0 && c1 == c2 && c1 != 0); return c1 - c2;}
###示例
#include#include #include int main(void) { int n = 4; char str3[] = "ABCf"; char str4[] = "abcd"; printf("mystrncasecmp(str3, str4, n) = %d\n", mystrncasecmp(str3, str4, n)); return 0;}
总结
strcasecmp
和 strncasecmp
是标准库中用于不区分大小写的字符串比较函数。前者比较整体字符串,后者比较限定长度的字符串。在编程过程中,可以灵活地选择其中一个或开发自定义实现的组合函数,满足不同的场景需求。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月18日 20时34分21秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
重置UAG Application admin密码
2019-03-12
Horizon Daas租户管理平台扩展分配时报:内部错误
2019-03-12
嵌入式系统试题库(CSU)
2019-03-12
【自考】之信息资源管理(一)
2019-03-12
setup facatory9.0打包详细教程(含静默安装和卸载)
2019-03-12
Linux kernel pwn --- CSAW2015 StringIPC
2019-03-12
IDEA 找不到 Persistence窗口解决办法
2019-03-12
C++ Primer Plus读书笔记:循环读取(错误处理)
2019-03-12
伴随矩阵和逆矩阵的关系证明
2019-03-12
Form窗体属性
2019-03-12
解决Eclipse加载图片或网页出现404错误
2019-03-12
vue 错误收集
2019-03-12
Java选择排序算法实现
2019-03-12
00010.02最基础客户信息管理软件(意义类的小项目,练习基础,不涉及数据库)
2019-03-12
00013.05 字符串比较
2019-03-12
Effective Java 读书笔记
2019-03-12
SpringBoot使用@Email报错误
2019-03-13
Rabbitmq的内存磁盘监控
2019-03-13