首页 > 其他分享 >strstr函数及其代码模拟实现

strstr函数及其代码模拟实现

时间:2023-08-28 14:36:27浏览次数:38  
标签:const str2 代码 ret char strstr str1 模拟

一.用法

定义:char * strstr( const char *str1, const char *str2 );

•判断str1中是否包含子串str2

•若包含,则返回在str1中子串str2首字符的地址

•若不包含,则返回空指针NULL

例:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[] = "zhangsan";
	char arr2[] = "san";
	char* ret = strstr(arr1, arr2);
	if (ret == NULL)
	{
		printf("子串不存在\n");
	}
	else
	{
		printf("子串存在 且为:%s\n", ret);
	}
	return 0;
}

运行结果:

strstr函数及其代码模拟实现_字符串


二、代码模拟实现

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>

//代码模拟实现
char* my_strstr(const char* str1, const char* str2)
{
	assert(str1 && str2);
	const char* s1 = str1;
	const char* s2 = str2;
	const char* p = str1;

	while (*p)
	{
		s1 = p;
		s2 = str2;
		while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2)
		{
			s1++;
			s2++;
		}
		if (*s2 == '\0')
		{
			return (char*)p;
		}
		p++;
	}
	return NULL;
}

int main()
{
	//char email[] = "[email protected]";
	//char substr[] = "bitejiuyeke";
	//char* ret = my_strstr(email, substr);
	char arr1[] = "zhangsan";
	char arr2[] = "san";
	char* ret = my_strstr(arr1, arr2);

	if (ret == NULL)
	{
		printf("子串不存在\n");
	}
	else
	{
		printf("子串存在,且为:%s\n", ret);
	}
	return 0;
}

运行结果:

strstr函数及其代码模拟实现_字符串_02


以上就是strstr函数的基本用法,欢迎指正~

标签:const,str2,代码,ret,char,strstr,str1,模拟
From: https://blog.51cto.com/u_16210399/7263458

相关文章

  • Python爬虫实战 - 模拟登录采集数据
    在进行数据采集时,有些网站需要进行登录才能获取到所需的数据。本文将介绍如何使用Python爬虫进行模拟登录,以便采集网站的数据。我们提供了完善的方案和代码示例,让你能够轻松操作并获取所需的数据。使用Python爬虫模拟登录网站采集数据价值:数据获取:通过模拟登录,你可以通过网站的登录......
  • 《代码整洁之道》第 10 章 类
    第10章类10.1类的组织遵循标准的Java约定,类应该从一组变量列表开始。如果有公共静态常量,应该先出现。然后是私有静态变量,以及私有实体变量。很少会有公共变量。公共函数应跟在变量列表之后。我们喜欢把由某个公共函数调用的私有工具函数紧随在该公共函数后面。这符合了......
  • 学习笔记:DSTAGNN中ST块的代码分析
    DSTAGNN模型可以看我上一个博客学习笔记:DSTAGNN:DynamicSpatial-TemporalAwareGraphNeuralNetworkforTrafficFlowForecasting这篇博客主要写了我对代码中ST块部分的阅读。写这篇模型的初衷,是这篇论文结构图和语言描述不太一致,再加上我想要学习怎么写一个时空预测的代......
  • 解决MASM32代码汇编出错: error A2181: initializer must be a string or single item
    最近用MASM32编程更新SysInfo,增加对IPv6连接信息的收集,使用到了typedefstruct_MIB_TCP6ROW_OWNER_MODULE{UCHARucLocalAddr[16];DWORDdwLocalScopeId;DWORDdwLocalPort;UCHARucRemoteAddr[16];DWORDdwRemoteScopeI......
  • JVS低代码开发工具基础篇:应用中心配置说明
    JVS应用中心是一个集中管理和提供企业级轻应用程序的平台或界面。它可以是类似企业轻应用的应用商店或者一个软件管理工具,用于管理者便捷的下载、上传、发布和安装各种企业级应用程序。应用中心功能介绍在JVS角色中有“应用管理员”的角色,如果赋予该角色,则用户为应用管理员,应用管理......
  • 【深入浅出系列】之代码可读性 | 京东云技术团队
    这是“深入浅出系列”文章的第一篇,主要记录和分享程序设计的一些思想和方法论,如果读者觉得所有受用,还请“一键三连”,这是对我最大的鼓励。一、老生常谈,到底啥是可读性一句话:见名知其义。有人说好的代码必然有清晰完整的注释,我不否认;也有人说代码即注释,是代码简洁之道的最高境界,我也......
  • Unity RenderTexture 当作为 Camera.targetTexture 时,在某些安卓手机或模拟器无法显示
    今天打包的时候遇到一个坑,就是用RenderTexture的时候,在某些手机上会显示黑屏,一查发现这是某些安卓设备才会出现的BUG(奇怪的是那台测试机是鸿蒙系统,懂的都懂)解决方法也很简单,就是不能用RenderTexture资源,而改成动态代码创建即可解决这个BUG同时解决了另一个RenderTexture的BUG,就......
  • 20行代码,实现屏幕录像 展示一个技巧,可以给任何网站、网页实现屏幕录像功能。
     这段代码  控制台运行之后会出现 “undefined”然后双击要录制的屏幕就可以了 varbody=document.body;body.addEventListener('dblclick',asyncfunction(){ varstream=awaitnavigator.mediaDevices.getDisplayMedia({video:true}); varmime......
  • 测试代码
    usingSystem.IO.Compression;#pragmawarningdisable414,3021namespaceMyApplication{[Obsolete("...")]classProgram:IInterface{publicstaticListJustDoIt(intcount){Spannumbers=stackallo......
  • 《代码整洁之道》第 9 章 单元测试
    第9章单元测试9.1TDD三定律定律一:在编写不能通过的单元测试前,不可编写生产代码。定律二:只可编写刚好无法通过的单元测试,不能编译也算不通过。定律三:只可编写刚好足以通过当前失败测试的生产代码。9.2保持测试整洁测试代码和生产代码一样重要。它可不是二等公民。他......