一、 strcasecmp()用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异。若参数s1和s2字符串相同则返回0。s1长度大于s2长度则返回大于0 的值,s1 长度若小于s2 长度则返回小于0的值。
unsigned char strcasecmp(const char *s1, const char *s2)
{
unsigned char c1 , c2;
do{
c1 = tolower(*s1++);
//These functions convert lowercase letters to uppercase, and vice versa.
c2 = tolower(*s2++);
}while(c1 == c2 && c1 != 0);
return c1 - c2;
}
二、strncasecmp()用来比较参数s1和s2字符串前n个字符,比较时会自动忽略大小写的差异。若参数s1和s2字符串相同则返回0 s1若大于s2则返回大于0的值 s1若小于s2则返回小于0的值。
unsigned char strncasecmp(const char *s1, const char *s2, int n)
{
unsigned char c1, c2;
do
{
c1 = tolower(*s1++);
c2 = tolower(*s2++);
} while((--n > 0) && c1 == c2 && c1 != 0);
return c1 - c2;
}
三、C语言测试实例
#include <string.h>
#include<stdio.h>
void main()
{
char *a="abcdefg";
char *b="aBCDEFG";
char *c="aBcDet";
char *d="AbCdEf";
if(!strcasecmp(a,b))
printf("%s=%s\n",a,b);
else
printf("%s!=%s\n",a,b);
if(!strcasecmp(c,d))
printf("%s=%s\n",c,d);
else
printf("%s!=%s\n",c,d);
if(!strncasecmp("android","androido",7))
printf("android=androido 7\n");
else
printf("android!=androido 7\n");
if(!strncasecmp("android","androido",8))
printf("android=androido 8\n");
else
printf("android!=androido 8\n");
if(!strncasecmp("androidO","androido",8))
printf("androidO=androido 8\n");
else
printf("androidO!=androido 8\n");
}
四、测试结果
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。