(C语言)模拟实现库函数strstr()
目录
前言
实现原理:
前言
库函数strstr():const char* strstr(const char* str1,const char* str2);strstr()求字符串str1中是否存在子字符串str2,所以需要两个字符串地址,返回一个字符指针。
实现原理:
//模拟实现strstr()在一个字符串中寻找另外一个字符串
#include<stdio.h>
#include<assert.h>
char* my_strstr(const char* s1, const char* s2)
//s2是被查找字符串的字符指针
{
assert(s1 && s2);//先判定都不是空指针
const char* ps1 = NULL;//设定两个指针,分别作为临时变量,当两字符串相同且不为\0时的地址
const char* ps2 = NULL;
const char* p = s1;//设定一个临时指针,存放大字符串的首地址,方便后面查找
if (*s2 =='\0')//当被查找字符串为空字符串时,返回str1的地址即这里的临时指针变量p
{
return p;
}
while (*p)//当存放str1某个元素的地址的内容不为0时进入循环
{
ps1 = p;//ps1存放此时在str1中查找的元素的地址
ps2 = s2;//ps2存放被查找元素的首地址
while (*ps1 && *ps2 && (*ps1 == *ps2))//当查找到的两字符串相同且都不为'\0'时循环
{
ps1++;
ps2++;
//指针自加,向后查找相同元素,直到不相同,或者其中之一为‘\0’时退出循环
}
if (*ps2 == '\0')//当退出循环时,如果ps2查找到的最后一个元素为'\0'时那么str1中存在子字符串str1
{
return p;//满足条件时,返回此时停留在str1某元素上的地址
}
p++;//如果以上条件不满足,那么向后查找一个元素,继续比较;
}
return NULL;//循环结束时,都没有结束,说明str1中不含子字符串str2
}
int main()
{
char str1[] = "ABCDEEEGBCC";
char str2[] = "EEGB";
char* ret=my_strstr(str1, str2);
//函数功能:在字符串str1中 寻找字符串str2 如果有则返回相同部分开头的地址,否则返回空指针
if (ret == NULL)
{
printf("找不到");
}
else
{
printf("找到了 %s", ret);
}
return 0;
}
实现结果:
(C语言)模拟实现库函数strstr()相关推荐
- C语言模拟实现库函数 atoi
库函数atoi介绍 : 作用:将字符串中的数字转换成整形数字 参数:字符串指针 返回类型:int整形 模拟实现代码如下: #define _CRT_SECURE_NO_WARNINGS 1// 模拟实 ...
- C语言--模拟实现库函数strcpy
目录 前言 strcpy实现的基本原理 函数的模拟实现 代码优化 assert--断言 const关键字 strcpy的返回值 结语 前言 本章内容我们将通过相关函数来实现库函数中的strcpy. s ...
- c语言模拟实现库函数strcat,【C语言】模拟实现库函数strcat函数
CSS魔法堂:Reset CSS 下列样式规则可用于最小化各浏览器标签样式的不一致性.注意:实际使用时应该对其进行适当的调整,以适应项目要求. /* http://meyerweb.com/eric/ ...
- 用c语言模拟实现常用字符串函数
目录 一.常用字符串函数介绍 1.strlen 2. strcpy 3.strcmp 4.strcat 5.strstr 二.模拟实现常用字符串函数 1.strlen 2.strcpy 3.strcm ...
- 【c语言】模拟库函数strstr
// 模拟库函数strstr#include <stdio.h> #include <assert.h>const char* my_strstr(const char *pa ...
- C语言模拟实现标准库函数之qsort() 2
C语言模拟实现标准库函数之qsort() <1> https://blog.csdn.net/csdn_kou/article/details/80158194 排序数字 int int_ ...
- 【C语言】模拟实现库函数 strcpy(复制字符串内容) 与 strlen(求字符串长度)
前言:对于库函数的使用,我们不仅要会使用方法,更要知晓使用原理,而知晓使用原理最好的方法就是模拟相应库函数的使用. 今天我们就来模拟 strcpy(复制字符串内容) 与 strlen(求字符串长度)这 ...
- C语言模拟实现标准库函数之strcpy()
strcpy(dest,src) strcpy是一种C语言的标准库函数,strcpy把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间,返回值的类型为char*. char ...
- c语言atof函数源码,【c语言】模拟实现库函数的atof函数
// 模拟实现库函数的atof函数 #include #include #include #include double my_atof(char const *p) { double ret = 0 ...
最新文章
- 在windows下配置pthread多线程
- python用selenium爬取网页数据_Python项目实战:使用selenium爬取拉勾网数据
- HAProxy Keepalived L4-L7 高可用负载均衡解决方案
- 如何使用Python玩转PDF各种骚操作?
- ArcGIS Engine开发模板及C#代码
- Android之图片边显示模糊原因
- 【bfs】重力球(luogu 7473/NOI Online 2021 普及组 T3)
- CocoaPods通过网络代理执行资源更新
- Python中jmespath解析提取json数据
- 超轻量级PHP框架BroPHP
- Spring Bean的加载过程以及一些生命周期
- while循环 dowhile循环 for循环(C++)
- 国民经济行业代码与投入产出表IO2002年行业代码
- Windows下C语言多线程函数_beginthread简单入门应用例子
- linux简易离线词典下载手机版,Linux离线查询字典的方法
- ofd发票怎么打开?ofd格式发票转换pdf格式发票的方法
- 常见几种编码格式及比较
- python爬虫学习7:读取起点排行榜数据
- H指数(h-index)的Python实现
- 把PDF或图片的数据导入到SPSS中的方法
热门文章
- ubuntu下Python虚拟环境的安装、激活、退出
- 怎样把视频压缩小一点?这些软件使用技巧你不能不知道
- excel离散度图表怎么算_“excel怎么做离散分析“EXCEL中AVEDEV计算离散度是什么?...
- python爬虫获取元素的属性值_趣说Python爬虫05--获取基金实时净值
- STM32 Proteus UCOSII系统简易时钟计时系统-0054
- 10个获得美好生活的小窍门
- 用两个栈实现队列(Java实现)
- 个人准则、格言、作息
- 蓝牙音乐之AVRCP在安卓系统中的实现
- Android Locale语言设置