模拟实现strstr函数

    技术2026-03-03  12

    1.描述

    const char * strstr ( const char * str1, const char * str2 ); char * strstr ( char * str1, const char * str2 )作用是判断在str1是否包含str2,是就返回str1中与str2匹配的头指针,失败返回空指针。库函数中没有严格的类型检查,空指针传入会报错。

    2.代码展示

    #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<string.h> const char *mystrstr(const char*str1, const char* str2) { assert(str1&&str2); while (*str2) { while (*str1&&*str1 != *str2) { ++str1; } if (!*str1) return NULL; const char* tmp1 = str1, *tmp2 = str2; while (*str1&&*str2&&*str1 == *str2) { ++str1; ++str2; } if (*str2) str1 = tmp1 + 1, str2 = tmp2; else str1=tmp1; } return str1; } void test3() { char arr1[] = "hello world"; char arr2[]="ld"; char *ret1 = strstr(arr1, arr2); printf("%p %p %p\n", ret1,arr1+9,arr2); char arr3[] = "hello world"; char arr4[] = "ld"; const char *ret2 = mystrstr(arr3, arr4); printf("%p %p %p\n", ret2,arr3+9,arr4); } int main() { test3(); system("pause"); return 0; }

    3.结果展示

    Processed: 0.014, SQL: 9