博客
关于我
字符串比较函数-strcasecmp()和strncasecmp()
阅读量:667 次
发布时间:2019-03-16

本文共 1582 字,大约阅读时间需要 5 分钟。

strcasecmp 和 strncasecmp 函数说明

经典的字符串比较函数 strcasecmpstrncasecmp,它们分别用于进行不区分大小写的字符串比较。以下将详细介绍两者的实现原理和适用场景。

strcasecmp 函数说明

strcasecmp 函数用于比较两个字符串 s1s2,将大小写视为相同。比较过程中,自动忽略大小写差异,直到遇到大小写不同的字符或字符串末尾。

返回值

  • s1s2 字符串完全相同,返回 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 函数用于比较两个字符串 s1s2 的前 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;}

总结

strcasecmpstrncasecmp 是标准库中用于不区分大小写的字符串比较函数。前者比较整体字符串,后者比较限定长度的字符串。在编程过程中,可以灵活地选择其中一个或开发自定义实现的组合函数,满足不同的场景需求。

转载地址:http://inoqz.baihongyu.com/

你可能感兴趣的文章
TreeSet、TreeMap
查看>>
JVM内存模型
查看>>
可变长度参数
查看>>
3、条件查询
查看>>
cordova打包apk更改图标
查看>>
GitHub上传时,项目在已有文档时直接push出现错误解决方案
查看>>
文件系统的层次结构
查看>>
vue(渐进式前端框架)
查看>>
vscode设置eslint保存文件时自动修复eslint错误
查看>>
Remove Extra one 维护前缀最大最小值
查看>>
Linux操作系统的安装与使用
查看>>
C++ 继承 详解
查看>>
OSPF多区域
查看>>
Docker入门之-镜像(二)
查看>>
去了解拉绳位移编码器的影响因素
查看>>
无法初始化Winsock2.2处理
查看>>
vMotion 操作失败进度卡在14% ,报错: Operation Timed out
查看>>
重置UAG Application admin密码
查看>>
Horizon Daas租户管理平台扩展分配时报:内部错误
查看>>
嵌入式系统试题库(CSU)
查看>>