标签:strstr
今天我们来模拟实现strstr这个函数,首先我们先来了解一下这个函数,这个函数原型为
char *strstr(char *str1,char *str2),功能是:从字符串str1中查找是否有符串str2,若str2是str1的子串,则先确定str2在str1的第一次出现的位置,并返回此str1在str2首位置的地址,如果str2不是str1的子串,则返回NULL。下面我们来看代码:
#include <stdio.h> #include <assert.h> char *my_strstr (const char *str,const char *substr) { const char *str1 = str; const char *str2 = substr; const char *start = NULL; assert(str); assert(substr); while (*str1) { start = str1; //将str1所指向的地址传给start while (*str1 && *str2 && *str1 == *str2)//通过循环在str1中找是否有str2 { str1++; str2++; } if (*str2 == ‘\0‘) return (char*)start; str1 = start + 1; //str1中没有找到str2,则指针向后移一位,继续进行查找 str2 = substr; } return NULL; } int main() { char *p = my_strstr("abcccdef","cdef"); if (p != NULL) printf("%s\n",p); }
本文出自 “10944002” 博客,请务必保留此出处http://chrisapril.blog.51cto.com/10944002/1766324
标签:strstr
原文地址:http://chrisapril.blog.51cto.com/10944002/1766324