标题1.回顾一下strstr函数
其含义是在一个字符串str1中查找另一个字符串str2,并且返回字符串str2在str1中第一次出现的位置.比如下面的例子:返回的是“is is an apple”而不是“is an apple”
int main()
{
char arr1[] = "this is an apple\n";
const char* p = "is";
char* ret = strstr(arr1, p);
printf(" % s\n", ret);
return 0;
}
标题2.模拟实现strstr
先提出要解决的两个问题(1):在“abcdef\0”中找“bcd\0”(2):在“abbbcdef\0”中找“bbc\0”
在函数中传入三个指针变量,两个比较,一个用来记录最开始的位置
char* my_strstr(const char* str1,const char* str2)
{
const char* s1 = NULL;
const char* s2 = NULL;
const char* cur = str1;
if (*str2 == '\0')
return(char*)str1;
while (*cur)
{
s1 = cur;
s2 = str2;
while (*s1!='\0' && *s2!='\0'&& *s1 == *s2)
{
s1++;
s2++;
}
if (*s2 == '\0')
{
return (char*) cur;
}
cur++;
}
return NULL;
}
int main()
{
char arr1[] = "abcdefabcdef";
char arr2[] = "cdef";
char* ret = my_strstr(arr1, arr2);
if (ret == NULL)
printf("找不到\n");
else
printf("%s\n", ret);
return 0;
}