strstr的实现

Posted -A7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了strstr的实现相关的知识,希望对你有一定的参考价值。

strstr的实现

具体思路

首先,根据strstr函数的实现方法得知函数需要传进去的参数是两个字符串,而且这两个字符串都是不可更改的,这样,我们可以利用const来修饰;而且函数返回的也是一个字符串,那么返回值类型也可以确定,这样,我们可以写出这样一个函数的定义:char* my_strstr(const char* dest,const char* src){}。其中,dest指向的是目标字符串,也就是你需要比较的字符串,src指向的是源字符串,也就是用来被比较的字符串。找不到就可以返回一个空指针.

源码实现

// An highlighted block

#include <stdio.h>
#include<assert.h>
char* myStrstr(const char* dest, const char* src) {

	char* start = (char*)dest;//在这里需要强制类型转换成char*
	char* substart = (char*)src;
	char* cp = (char*)dest;//cp就是用来保存首地址的
	assert(dest != NULL);
	assert(src != NULL);
	while (*cp)
	{
		start = cp;
		while (*start != '\\0' && *substart != '\\0' && *start == *substart)
		{
			start++;
			substart++;
		}
		if (*substart == '\\0')
		{
			return cp;
		}
	
		cp++;//cp++可以得到原起始位置的下一个位置
	}
	return NULL;
}
int main() {
	char a[20] = "accddjj";
	char b[20] = "ccdd";
	printf("%s\\n", myStrstr(a, b));
	return 0;
}

以上是关于strstr的实现的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 28. Implement strStr() 实现strStr()

模拟实现strstr和strrstr

leetcode-----28. 实现 strStr()

代码随想录算法训练营第9天 | ●28. 实现 strStr() ●459.重复的子字符串 ●字符串总结 ●双指针回顾

Leetcode 28 - 实现 strStr():问题

LeetCode 28. Implement strStr()