淡泊明志 宁静致远
分类: C/C++
2006-11-25 22:25:01
【C语言库函数源代码】
【本程序在Dev C++ 4.9.9.2 下编译通过】
/*
得到s1中第一次包含s2字符串的位置指针。
*/
#include
char * my_strstr(const char *s1,const char *s2)
{
if (*s1 == 0)
{
if (*s2)
return (char *) NULL;
return (char *) s1;
}
while (*s1)
{
size_t i;
i = 0;
while (1)
{
if
(s2[i] == 0)
{
return
(char *) s1;
}
if
(s2[i] != s1[i])
{
break;
}
i++;
}
s1++;
}
return (char *) NULL;
}
int main()
{
char *str1 =
"ammana_babi";
char *str2 =
"babi";
char *p;
if( (p =
my_strstr(str1,str2)) == NULL)
printf("Can't find the string
\"%s\"!\n",str2);
else
printf("Find the string
\"%s\"!\n",p);
str1 = "abc";
str2 = "def";
if( (p =
my_strstr(str1,str2)) == NULL)
printf("Can't find the string
\"%s\"!\n",str2);
else
printf("Find the string
\"%s\"!\n",p);
system("pause");
return 0;
}
下面是另外一个版本的 strstr函数的源代码:
char * my_strstr(const char *src,const char *substr)
{
char *p,*tt;
if(src ==
NULL || substr == NULL)
return (char *) NULL;
if(!*src ||
!*substr)
return (char *) NULL;
while (*src)
{
for(tt = (char *)src,p = (char
*)substr;*p;tt++,p++)
{
if(*tt
!= *p)
break;
}
if(*p ==
'\0')
return (char *) src;
src++;
}
return (char *) NULL;
}