分享给大家两个不区分大小写的字符串查找函数 strstr
2016-06-13 16:37
537 查看
char* stristr (
const char * str1,
const char * str2
)
{
char *cp = (char *) str1;
char *s1, *s2;
if ( !*str2 )
return((char *)str1);
while (*cp)
{
s1 = cp;
s2 = (char *) str2;
while (*s1 && *s2)
{
char ch1=*s1,ch2=*s2;
if (isascii(*s1) && isupper(*s1) ) ch1 = _tolower(*s1);
if (isascii(*s2) && isupper(*s2) ) ch2 = _tolower(*s2);
if(ch1-ch2==0) s1++, s2++;
else break;
}
if (!*s2)
return(cp);
cp++;
}
return(NULL);
}
WCHAR* wcsistr (
const WCHAR * str1,
const WCHAR * str2
)
{
WCHAR *cp = (WCHAR *) str1;
WCHAR *s1, *s2;
if ( !*str2 )
return((WCHAR *)str1);
while (*cp)
{
s1 = cp;
s2 = (WCHAR *) str2;
while (*s1 && *s2)
{
WCHAR ch1=*s1,ch2=*s2;
if (iswascii(*s1) && iswupper(*s1) ) ch1 = towlower(*s1);
if (iswascii(*s2) && iswupper(*s2) ) ch2 = towlower(*s2);
if(ch1-ch2==0) s1++, s2++;
else break;
}
if (!*s2)
return(cp);
cp++;
}
return(NULL);
}
//T函数申明
#ifdef UNICODE
# define _tcsistr wcsistr
#else
# define _tcsistr stristr
#endif
const char * str1,
const char * str2
)
{
char *cp = (char *) str1;
char *s1, *s2;
if ( !*str2 )
return((char *)str1);
while (*cp)
{
s1 = cp;
s2 = (char *) str2;
while (*s1 && *s2)
{
char ch1=*s1,ch2=*s2;
if (isascii(*s1) && isupper(*s1) ) ch1 = _tolower(*s1);
if (isascii(*s2) && isupper(*s2) ) ch2 = _tolower(*s2);
if(ch1-ch2==0) s1++, s2++;
else break;
}
if (!*s2)
return(cp);
cp++;
}
return(NULL);
}
WCHAR* wcsistr (
const WCHAR * str1,
const WCHAR * str2
)
{
WCHAR *cp = (WCHAR *) str1;
WCHAR *s1, *s2;
if ( !*str2 )
return((WCHAR *)str1);
while (*cp)
{
s1 = cp;
s2 = (WCHAR *) str2;
while (*s1 && *s2)
{
WCHAR ch1=*s1,ch2=*s2;
if (iswascii(*s1) && iswupper(*s1) ) ch1 = towlower(*s1);
if (iswascii(*s2) && iswupper(*s2) ) ch2 = towlower(*s2);
if(ch1-ch2==0) s1++, s2++;
else break;
}
if (!*s2)
return(cp);
cp++;
}
return(NULL);
}
//T函数申明
#ifdef UNICODE
# define _tcsistr wcsistr
#else
# define _tcsistr stristr
#endif
相关文章推荐
- Linux C函数参考手册(PDF版)
- C# partial关键字说明
- Lua教程(十七):C API简介
- 简单谈谈lua和c的交互
- C#用链式方法表达循环嵌套
- cmd findstr 字符串查找增强使用说明
- C#中的委托数据类型简介
- C#编写的艺术字类实例代码
- C#实现打造气泡屏幕保护效果
- 举例讲解C#编程中委托的实例化使用
- 使用C#代码获取存储过程返回值
- C和指针小结(推荐)
- C++中explict关键字用法
- C/C++数据对齐详细解析
- 利用C语言来求最大连续子序列乘积的方法
- 字符串的组合算法问题的C语言实现攻略
- C 语言基础教程(我的C之旅开始了)[三]
- 学习C和C++的9点经验总结
- C++中的extern “C”用法详解