自己实现
int strncasecmp(const char *s1, const char *s2, int n)
{
#define DIFF_VALUE (‘a‘ - ‘A‘)
#define STRNCASECMP_FALSE (‘z‘ - ‘A‘)
int ch1 = 0;
int ch2 = 0;
int index = 0;
if (NULL == s1 || NULL == s2 || 0 > n) {
return STRNCASECMP_FALSE;
}
if (0 == n) {
return 0;
}
for (index = 0; index < n ; index++)
{
if((ch1 = *(unsigned char *)s1++) >= ‘A‘ && (ch1 <= ‘Z‘)) {
ch1 += DIFF_VALUE;
}
if((ch2 = *(unsigned char *)s2++) >= ‘A‘ && (ch2 <= ‘Z‘)) {
ch2 += DIFF_VALUE;
}
//printf("index=%u, ch1=%c, ch2=%c\r\n", index, ch1, ch2);
if (‘\0‘ == ch1 || ch1 != ch2) {
break;
}
} ;
return ch1 - ch2;
}
摘自并整理:http://www.voidcn.com/article/p-acjqpctj-oc.html
原文:https://www.cnblogs.com/LiuYanYGZ/p/12128056.html