#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; }