strstr功能:在s1中查找整个s2第一次出现的起始位置,并返回一个指向该位置的指针,如果s2没有完整的出现在s1中,则返回NULL。
#include <stdio.h>
#include <assert.h>
char *my_strstr(char const *pdest, char const *psrc)
{
const char *pstr1 = pdest;
const char *pstr2 = psrc;
const char *ptr = NULL;
assert(pdest);//断言字符串地址非零
assert(psrc);
if (*pstr2 == '\0')
{
return (char *)pstr1;
}
while (*pstr1 != '\0')
{
ptr = pstr1;
pstr2 = psrc;
while (*ptr != '\0' && *pstr2 != '\0'
&& *ptr == *pstr2)
{
ptr++;
pstr2++;
}
if (*pstr2 == '\0')
{
return (char *)pstr1;//将目的地址返回,以便可以链式访问
}
pstr1++;
}
return NULL;
}
int main()
{
char *p1 = "abbbcdef";
char *p2 = "bcd";
if (my_strstr(p1,p2) != NULL)
printf("%s\n", p1);
system("pause");
return 0;
}
转载于:https://blog.51cto.com/11285984/1750342