<span style="font-size:18px;color:#cc0000;"><strong>模拟实现strstr函数:
strstr(str1,str2)是指str2是否是str1的子串,如果是则返回str2在str1中首次出现的地址,如果不是则返回NULL</strong></span>.
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
#include<windows.h>
char *my_strstr(const char*str1, const char*str2)//const 常属性
{
assert(str1);//assert断言指针有效性
assert(str2);
int i = 0;
char*p1 = str1;
char*p2 = str2;
while (*p1 != '\0' && *p2 != '\0')
{
if (*p1 == *p2)
{
p2++;
p1++;
}
else
{
p2 = str2;
p1 = str1 + i;
i++;
}
}
if (*p2 == '\0')
{
return str1 + i -1;
}
else
return NULL;
}
int main()
{
int i = 0;
char arr1[10] = { "asdsfafsf" };
char arr2[10] = { "fa" };
char *ret = my_strstr(arr1, arr2);
if (ret != NULL)
{
printf("%s\n", ret);
}
system("pause");
return 0;
}