strstr模拟实现
strstr(str1,str2); 用于判断str2是否是str1的子串(子字符串)
如果是则函数返回str2在str1中首次出现的地址,否则返回null
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
char* my_strstr(const char*str1, const char* str2)
{
assert(str1 != NULL);
assert(str2 != NULL);
//下面这个if语句判断str2是不是空的,
//如果是空则直接返回str1
if (*str2 == '\0')
{
return (char*)str1;
}
while (*str1 != '\0')//当str1没到‘\0’时,执行下面,否则返回NULL
{
const char* p1 = str1;//创建新指针指向str1
const char* p2 = str2;//同上
while (*p2 != '\0')
{
if (*p1 != *p2)
{
break;
}
else
{
p1++;
p2++;
}
}
if ('\0' == *p2)
{
return (char*)str1;
}
++str1;
}
return NULL;
}
int main()
{
char* str1 = "hello world";
char* str2 = "llo";
printf("%s", my_strstr(str1, str2));
system("pause");
return 0;
}
运行结果如下