首页 > 其他分享 >入门c语言--基于c库函数strstr的实现

入门c语言--基于c库函数strstr的实现

时间:2023-11-18 20:31:30浏览次数:34  
标签:p2 tmp p1 strstr -- s2 s1 char 库函数

#include<stdio.h>
#include<assert.h>

char* my_strstr(const char* p1,const char* p2)
{
	assert(p1 && p2);//检查p1和p2是否为空指针
  //创建s1,s2来在p1,p2中进行移动,创建指针tmp来保存开始移动时的s1的位置
	char* s1=NULL;
	char* s2=NULL;
	char* tmp=(char*)p1;
  //对p1字符串进行判断是否为空字符
	if (!*p1)
	{
		return (char*)p1;
	}
  //进行查找循环
	while (*tmp)
	{
		s1 = (char*)tmp;
		s2 = (char*)p2;
    //开始查找循环
		while (*s1&&*s2&&(*s1==*s2))
		{
			s1++;
			s2++;
		}
    //判断查找循环停止的原因
		if (!*s2)
		{
			return tmp;
		}
		tmp++;
	}
	return NULL;
}

int main(void)
{
	const char* p1 = {"abbcdefg"};
	const char* p2 = { "bcde" };
	char* k = my_strstr(p1, p2);
  //对my_strtsr函数中所传回的值进行判断
	if (k == NULL)
	{
		printf("不存在\n");
	}
	else
	printf("%s\n", k);
	return 0;
}

标签:p2,tmp,p1,strstr,--,s2,s1,char,库函数
From: https://blog.51cto.com/u_16285400/8464793

相关文章

  • 《信息安全系统设计与实现》第十次学习笔记
    第十二章:块设备I/O和缓冲区管理块设备I/O缓冲区I/O缓冲的基本原理:文件系统使用一系列I/O缓冲区作为块设备的缓存内存。当进程试图读取(dev,blk)标识的磁盘块时。它首先在缓冲区缓存中搜索分配给磁盘块的缓冲区。如果该缓冲区存在并且包含有效数据、那么它只需从缓冲区中读取数据、......
  • 自然语言处理预训练—— 来自Transformers的双向编码器表示(BERT)
    我们已经介绍了几种用于自然语言理解的词嵌入模型。在预训练之后,输出可以被认为是一个矩阵,其中每一行都是一个表示预定义词表中词的向量。事实上,这些词嵌入模型都是与上下文无关的。让我们先来说明这个性质。 从上下文无关到上下文敏感ELMo(EmbeddingsfromLanguageModels)是......
  • Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)
    ApacheShiro1.2.4反序列化漏洞(CVE-2016-4437)ApacheShiro是一款开源安全框架,提供身份认证、授权、密码学和会话管理。Shiro框架直观、易用,同时也提供健壮的安全性。ApacheShiro1.2.4以及以前部版本中,加密的用户信息序列号后存储在名为remember-me的Cookie中,攻击者开源使用Shi......
  • Java秋招学习路线
    Java秋招学习路线前期:JVM+JUC+Redis+Mysql+项目(实际的项目或者网上找的项目)+力扣面试笔刷100题后期:边投简历边看八股MySql:MySql45讲链接:https://pan.baidu.com/s/1IEViw6E9SWmtgpot8Cdeug提取码:hsqf--来自百度网盘超级会员V6的分享Redis:黑马点评,可以当做简历里的一个项......
  • 学习笔记10
    20211301学习笔记10教材知识点总结12.1块设备I/O缓冲区读写到内存缓冲区中的操作:get_block,put_blockI/O缓冲原理:文件系统使用一系列I\O缓冲区作为块设备的缓冲内存,当进程读取标识的磁盘块时,首先在缓冲区缓存中搜索分配给磁盘块的缓冲区,若存在并包含有效数据,则读取数据,......
  • windows 微信小游戏
    有好几年没怎么使用Windows系统了,Windows版本微信居然小程序和小游戏了,这个确实会方便很多用户。总体来说是不错的。对我来说,这个非常不安全,非常容易制作辅助和外挂,感觉现在小程序Windows版本的辅助应该满天飞了吧 我现在简单记录一下小游戏存储路径,搞一些小动作需要知道的......
  • 囚徒4.0_11_基于python的风云云检测算法
    #囚徒4.0_11_基于python的风云算法#关于昨天数据不同的问题:是因为IDL和Python的逻辑不同而导致的,数据读取没问题,我表示错了。#换语言好麻烦,现在都不知道什么语法对应什么语言了,一团糟。#从上午十点写到现在,测试的时候发现python他的读取逻辑和IDL不一样,他的循环也不一样,我真......
  • 資料結構和演算法對一個工程師的意義?如何提升實力?
    我們常聽到人們會說,「演算法」和「資料結構」是一名優秀工程師的必備素養,但究竟這句話是什麼意思呢?工程師面試時常常用LeetCode解題來篩選面試者,而想要針對LeetCode刻意練習時,又需要先有「演算法」和「資料結構」的觀念基礎。這個面試準備過程即使是對本科系畢業的學生也需要......
  • web第三章网页之间的跳转
    本章首节是超链接链接由以下三部分组成:<a>文本或图片</a>标签为链接的源点“内属性href=···,标签<a>最基本属性(内加各种链接)路径地址(url),要链接的目标,简单来说就是说可以复制一个链接超链接的路径1.绝对路径:是指一个完整的资源地址可以是外部链接基本格式:通讯协议://服务......
  • kubectl-切换集群
    kubectl远程调用k8s集群//当前集群信息kubectlcofingcurrent-context//当前集训配置信息kubectlconfigview//选择集群通过上下文名字切换kubectlcofinguse-contextcontextNAME .kube/config配置文件示例Cluster//待补充... ......