函数定义:int strncasecmp(const char *s1, const char *s2, size_t n);
函数说明:strncasecmp()用来比较参数s1 和s2 字符串前n个字符,比较时会自动忽略大小写的差异。
返回值:若参数s1 和s2 字符串相同则返回0。s1 若大于s2 则返回大于0 的值,s1 若小于s2 则返回小于0 的值。
注:为了用系统的strncasecmp函数进行验证,将自己实现的strncasecmp重命名为src_strncasecmp
#include <string>
#include <iostream>
using namespace std;
int src_strncasecmp(const char *s1, const char *s2, size_t n)
{
int c1 = 0, c2 = 0;
while(n--)
{
c1 = *s1++;
c2 = *s2++;
if(!c1 || !c2) break;
if(c1>='A'&&c1<='Z') c1 += 'a' - 'A';
if(c2>='A'&&c2<='Z') c2 += 'a' - 'A';
if(c1!=c2) break;
}
return c1-c2;
}
int main(int argc,char* argv)
{
char *a = "aBcDeF";
char *b = "AbC";
cout << "system function:";
if(!strncasecmp(a, b, 4)) cout << a << " = " << b << endl;
else cout << a << " != " << b << endl;
cout << "own function:";
if(!src_strncasecmp(a, b, 4)) cout << a << " = " << b << endl;
else cout << a << " != " << b << endl;
return 0;
}
用多个字符串进行测试,自定义的 strncasecmp函数和系统的strncasecmp函数输出相同,说明自定义的strncasecmp函数是正确的。