Linux下没有现成的 不区分大小写的strstr函数,但是有 strncasecmp 函数,用于不区分大小写的字符串比较,利用它,我们可以很简单地实现不区分大小写的strstr函数
strncasecmp 函数原型:
int strncasecmp(const char *s1, const char *s2, size_t n);
strncasecmp 比较 s1 和 s2 的前 n 个字符,不区分大小写,返回值如下:
负整数: 如果 s1 < s2
0: 如果 s1 == s2
正整数: 如果 s1 > s2
我们的 不区分大小写的strstr函数 实现如下:
#include <strings.h>
const char* strstri(const char* str, const char* subStr)
{
int len = strlen(subStr);
if(len == 0)
{
return NULL;
}
while(*str)
{
if(strncasecmp(str, subStr, len) == 0)
{
return str;
}
++str;
}
return NULL;
}
strncasecmp 函数原型:
int strncasecmp(const char *s1, const char *s2, size_t n);
strncasecmp 比较 s1 和 s2 的前 n 个字符,不区分大小写,返回值如下:
负整数: 如果 s1 < s2
0: 如果 s1 == s2
正整数: 如果 s1 > s2
我们的 不区分大小写的strstr函数 实现如下:
#include <strings.h>
const char* strstri(const char* str, const char* subStr)
{
int len = strlen(subStr);
if(len == 0)
{
return NULL;
}
while(*str)
{
if(strncasecmp(str, subStr, len) == 0)
{
return str;
}
++str;
}
return NULL;
}