函数说明 strcasecmp()用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异。

返回值    若参数s1和s2字符串相同则返回0。s1长度大于s2长度则返回大于0 的值,s1 长度若小于s2 长度则返回小于0的值.

int strcasecmp(const char *s1, const char *s2)  
{  
    int c1, c2;  
    do {  
        c1 = tolower(*s1++);  
        c2 = tolower(*s2++);  
    } while(c1 == c2 && c1 != 0);  
    return c1 - c2;  
}

函数说明:strncasecmp()用来比较参数s1和s2字符串前n个字符,比较时会自动忽略大小写的差异

返回值   :若参数s1和s2字符串相同则返回0 s1若大于s2则返回大于0的值 s1若小于s2则返回小于0的值

int strnicmp(const char *s1, const char *s2, int len)  
{  
    unsigned char c1, c2;  
    if(!len)  
        return 0;  
    do{  
        c1 = *s1++;  
        c2 = *s2++;  
        if (!c1 || !c2)  
            break;  
        if (c1 == c2)  
            continue;  
        c1 = tolower(c1);  
        c2 = tolower(c2);  
        if (c1 != c2)  
            break;  
    }while(--len);  
    return (int)c1 - (int)c2;  
}

字符串比较实现

int strcmp(const char* strDest,const char* strSrc)
{
	assert((strDest != NULL) && (strSrc != NULL));
	while (*strDest == *strSrc)
	{
		if (*strDest == '\0')
		{
			return 0;
		}
		++strDest;
		++strSrc;
	}
	return *strDest - *strSrc;
}