字符串比较函数-strcasecmp()和strncasecmp()
发布日期:2021-05-19 20:29:42 浏览次数:11 分类:精选文章

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

上一篇:Linux内核里线程,进程的区别
下一篇:C++STL中vector容器 begin()与end()函数、front()与back()的用法

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年04月18日 20时34分21秒