strstr的作用是寻找到并打印出之后的字符串
如图:
模拟实现
#define _CRT_SECURE_NO_WARNINGS 1
//模拟实现strstr
#include<stdio.h>
#include<string.h>
char* my_strstr(const char* arr1,const char* arr2)
{
const char* p1 = NULL;
const char* p2 = NULL;
const char* cur = arr1;//建立一个初始位置
if (*arr2 == '\0')//如果一开始传输的就是空值,则直接返回
return (char*)cur;
while (*cur)
{
p1 = cur;
p2 = arr2;
while (*p1!='\0'&&*p2!='\0'&& * p1 == *p2)//防止两份相同的字符串出现导致越界
{
*p1++;
*p2++;
}
if (*p2 == '\0')//当遍历到\0时停止并返回初始位置
{
return (char*)cur;//原来是const char*类型,强制类型转换为char*
}
cur++;//没有找到则初始位置向右偏移
}
}
int main()
{
char arr1[] = "abbbcabc";
char arr2[] = "bbc";
char* str = my_strstr(arr1, arr2);//打印出寻找的以及之后的所有字符
//char*str=strstr(arr1, arr2);//打印出寻找的以及之后的所有字符
printf("%s", str);
return 0;
}
注意
建立初始位置cur,这样不管p1怎么改变都不会影响cur
在循环里寻找p1p2相同的字符,如果没找到就cur++;
这样就可以把已经找过的字符给排除掉
最后返回cur就是要找到的字符串