模拟实现strstr,查询目标字符串中是否含有所查的子串,里面的要点是记录目标字符串移动时当前指针的位置,本文中采用cur来记录。#include <stdio.h> #include<assert.h> char* my_strstr(char* p1,char* p2) { assert(p1 && p2); char* cur = p1; char* s1 = p1; char* s2 = p2; if (*s2 == '\0') return p1; while (*cur) { s1 = cur; s2 = p2; while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2) { s1++; s2++; } if (*s2 == '\0') { return cur; } cur++; } return NULL; } int main() { char arr1[] = "abbcdef"; char arr2[] = "bcd"; char* ret=my_strstr(arr1, arr2); if (ret == NULL) printf("找不到子串"); else printf("是子串"); }