strstr函数的实现
首先匹配首字符,然后依次往后匹配,匹配完成的条件是子串的结束符匹配到了,在开始匹配子串之前,将父串所在位置保存。
#include <stdio.h>
char *strstr(const char *s1, const char *s2)
{
if(*s2 == '\0')
return (char*)s1;
for(int i = 0; s1[i] != '\0'; i++)
{
int tmp = i;
int j = 0;
while(s1[i++] == s2[j++])
{
if(s2[j] == '\0')
return (char*)&s1[tmp];
}
i = tmp;
}
return NULL;
}
int main()
{
char s1[] = "adsafasf";
char s2[] = "";
char s3[] = "saf";
printf("%s\n", strstr(s1, s2));
return 0;
}