stristr函数
用来实现在一个字符串中找出一个子串,大小写不敏感。
此处大小写是 采用字符和32作或操作,大写字母的ASCii是65开始,小写字母是从97开始,用32和字符作或操作,正好打开了第五位,若该字母是大写的,则可转为小写,若为小写的,则保持不变,这样就可以根据其大小比较,非常方便。
//teststristr.cpp
#i nclude <stdio.h>
char * Stristr(const char * Src,const char *Dest)
{
char * s1 = (char *)Src;
char * d1 = (char *)Dest;
char * d2 = d1;
char * s2 = s1;
if (s1 == NULL || d1 == NULL)
{
return NULL;
}
while (true)
{
while (('\0' != *s1)
&&('\0' != *d1)
&&(((*s1)|32) == ((*d1)|32))
)
{
s1++;
d1++;
}
if (*d1 == '\0')
{
return (s2);
}
if (*s1 == '\0')
{
return NULL;
}
d1 = d2;
s2++;
s1 = s2;
}
}
int main()
{
char *chr1 = "hello world,my na877me is Shen Rong rong!";
char *dest1 = "877";
char *retchr = Stristr(chr1,dest1);
printf("%s\n",retchr);
return 0;
}