一、 strcasecmp()用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异。若参数s1和s2字符串相同则返回0。s1长度大于s2长度则返回大于0 的值,s1 长度若小于s2 长度则返回小于0的值。
代码语言:javascript复制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的值。
代码语言:javascript复制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语言测试实例
代码语言:javascript复制#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=%sn",a,b);
else
printf("%s!=%sn",a,b);
if(!strcasecmp(c,d))
printf("%s=%sn",c,d);
else
printf("%s!=%sn",c,d);
if(!strncasecmp("android","androido",7))
printf("android=androido 7n");
else
printf("android!=androido 7n");
if(!strncasecmp("android","androido",8))
printf("android=androido 8n");
else
printf("android!=androido 8n");
if(!strncasecmp("androidO","androido",8))
printf("androidO=androido 8n");
else
printf("androidO!=androido 8n");
}
四、测试结果