码迷,mamicode.com
首页 > 其他好文 > 详细

模拟实现strstr

时间:2016-04-21 18:42:13      阅读:125      评论:0      收藏:0      [点我收藏+]

标签: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

标签:strstr

原文地址:http://chrisapril.blog.51cto.com/10944002/1766324

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!