[C語言] 實現strstr函數
#include <stdio.h>
#include <assert.h>
char *my_strstr(const char *str1,const char *str2)
{
assert(str1);
assert(str2);
char *p = str1; //記錄str1的初始位置
char *s1 = p; //保存str1的開始位置
char *s2 = str2; //記錄str2的初始位置
while(*p)
{
s = p; //將str1的起始位置由上一次的起始位置向後加1,由下面的p++計算
while(*p && *q && *p == *q) //如果不匹配,以後每次比較時,str2都從首元素開始
{
p++;
q++;
}
if(*q == '\0')
{
return p;
}
p++; //不匹配,str1由上一次的起始位置向後加1
}
return NULL; //整體遍歷完沒有找到,返回空
}
int main()
{
char *str1 = "abbbcdef";
char *str2 = "bbcd";
char *ret = my_strstr(str1,str2);
printf("%s\n",ret);
return 0;
}