模擬實現strrstr


模擬實現strrstr

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
char *my_strstr(const char *dest, const char *src)//查找子字符串的函數
{
	char *p = NULL;
	char *q = (char*)src;
	assert(dest);
	assert(src);
	while(*dest)
	{
		p = (char*)dest;
		if(*dest == *src)
		{
			while(*src && *dest == *src)
			{
				dest++;
				src++;
			}
			if(*src ==0)
				return p;
			else
			{
				dest = p;
				src = q;
			}
		}
		dest++;
	}
	return NULL;
}
char *my_strrstr(const char *dest, const char*src)
{
	char *p = NULL;
	assert(dest);
	assert(src);
	while(*dest)
	{
		if(my_strstr(dest,src))//在原字符串裏查找子字符串,如果有就將第一個字符的地址返回來
		{
			p = (char*)my_strstr(dest,src);
			dest=p+1;//使指針指向下一個地址
			//比如abcdefabcdef中找cde最後一次出現的位置,先找到第一次出現cde的位置,返回
			//c的地址,然後使dest指向下一個位置,查找下一次出現cde的位置,這樣就提高了效率
		}
		else//如果沒查到有子字符串,就直接返回空
			return p;
		
	}
	return p;
}
int main()
{
	//strrstr
	char arr1[] = "abababab";
	char arr2[] = "aba";
	char *p = my_strrstr(arr1, arr2);
	if(p)
		printf("%s\n",p);
	else
		printf("無此字符串!\n");
	system("pause");
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章