写一个函数,模拟strstr()函数,strstr()函数主要将主串中子串,以及以后的字符全部返回。
比如:在abbcdeef中查找bcde,返回bcdeef
思想:
1.遍历整个长串,然后找到与短串相同的位置,并且记录这个位置
2.与短串依次比较,若在后面某个位置不相同了,这时候,将刚记录的长串的位置后移一位继续比较;若一直都相同,则返回刚才记录的位置
3.如果长串遍历都没找到,则返回NULL
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char *my_strstr(const char *dest, const char *src)
{
assert(*dest);
assert(*src);
const char *start = NULL;
char *s1 = dest;
char *s2 = src;
while (*s1)
{
s1 = dest;//标记开始比较的位置
s2 = src;
while ((*s1 != '\0') && (*s2 != '\0'))
{
if (*s1++ == *s2++)
{
;
}
else
{
dest++;
break;
}
}
if (*s2 == '\0')
{
return dest;//返回长串
}
}
return NULL;
}
int main()
{
char *str1 = "abbcdeef";
char *str2 = "bcde";
char *ret = my_strstr(str1, str2);
printf("%s\n", ret);
system("pause");
return 0;
}
转载于:https://blog.51cto.com/01160529/1829103