模拟实现strstr

首先,先让我们看一下这个函数是如何使用的:

#include <stdio.h>
#include <string.h>
#include<assert.h>
//模拟实现strstr,在第一个字符串中查找另一个字符串,返回的是第一次str2在str1中出现的地址
//char *strstr(const char * str1,const char * str2);
int main() 
{
	char arr1[] = "this is an apple\n";
	const char* p = "is";
	char* ret = strstr(arr1, p);
	printf("%s", ret);
	return 0;

}

调试结果为:因为上面代码中已经提到strstr函数返回的是str2在str1中第一次出现的地址,所以打印出来的也是从第一个is开始的字符串!

下面让我们根据以上内容来模拟实现strstr函数!(可能会有一些小困难,看不懂的友友可以把问题放到评论区,我会及时回复!!!)

#include <stdio.h>
#include <string.h>
#include<assert.h>
//模拟实现strstr
char* my_strstr(const char* str1, const char* str2)
{
	const char* s1 = NULL;//初始化s1和s2时置为空防止生成野指针;
	const char* s2 = NULL;
	const char* cur = str1;
	if (*str2 == '\0')
	return (char*)str1;//传入str2的特殊情况,当str2为空字符串时,直接返回空字符串,
	while (*cur)
	{
		s1 = cur;
		s2 = str2;
		while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2)
		{
			s1++;
			s2++;
		}
		if(*s2=='\0')
			return (char*)cur;
		cur++;
	}
	return NULL;
}
int main()
{
	char arr1[] = "this is an apple";
	char arr2[] = "is";
	char* ret = my_strstr(arr1, arr2);
	if (ret == NULL)
		printf("找不到!\n");
	else
		printf("%s", ret);
	return 0;
}

相关推荐

  1. strstr 的使用和模拟实现

    2024-04-04 09:18:02       17 阅读
  2. C语言第五十四弹---模拟使用strstr函数

    2024-04-04 09:18:02       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-04 09:18:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-04 09:18:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-04 09:18:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-04 09:18:02       20 阅读

热门阅读

  1. @Builder 函数无法被刷新 UI?????

    2024-04-04 09:18:02       15 阅读
  2. Opencv人机交互界面设置

    2024-04-04 09:18:02       13 阅读
  3. Unity进阶之路(1)回顾与思考

    2024-04-04 09:18:02       9 阅读
  4. Unity进阶之路(2)UI Toolkit

    2024-04-04 09:18:02       13 阅读
  5. python继承和多态

    2024-04-04 09:18:02       13 阅读
  6. 管理相关方参与的工具与技术

    2024-04-04 09:18:02       14 阅读
  7. rabbitmq消息处理模式

    2024-04-04 09:18:02       15 阅读
  8. git branch 是干什么的

    2024-04-04 09:18:02       19 阅读
  9. django-hexo-admin(一个基于django的hexo博客平台)

    2024-04-04 09:18:02       15 阅读
  10. C#面:.NET 中读写 XML 的类归属于哪些命名空间

    2024-04-04 09:18:02       14 阅读
  11. MongoDB数据更新大之大与小中小

    2024-04-04 09:18:02       14 阅读