目录

前言

实现原理:


前言

        库函数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()相关推荐

  1. C语言模拟实现库函数 atoi

    库函数atoi介绍 : 作用:将字符串中的数字转换成整形数字 参数:字符串指针 返回类型:int整形 模拟实现代码如下: #define _CRT_SECURE_NO_WARNINGS 1// 模拟实 ...

  2. C语言--模拟实现库函数strcpy

    目录 前言 strcpy实现的基本原理 函数的模拟实现 代码优化 assert--断言 const关键字 strcpy的返回值 结语 前言 本章内容我们将通过相关函数来实现库函数中的strcpy. s ...

  3. c语言模拟实现库函数strcat,【C语言】模拟实现库函数strcat函数

    CSS魔法堂:Reset CSS 下列样式规则可用于最小化各浏览器标签样式的不一致性.注意:实际使用时应该对其进行适当的调整,以适应项目要求. /* http://meyerweb.com/eric/ ...

  4. 用c语言模拟实现常用字符串函数

    目录 一.常用字符串函数介绍 1.strlen 2. strcpy 3.strcmp 4.strcat 5.strstr 二.模拟实现常用字符串函数 1.strlen 2.strcpy 3.strcm ...

  5. 【c语言】模拟库函数strstr

    // 模拟库函数strstr#include <stdio.h> #include <assert.h>const char* my_strstr(const char *pa ...

  6. C语言模拟实现标准库函数之qsort() 2

    C语言模拟实现标准库函数之qsort() <1> https://blog.csdn.net/csdn_kou/article/details/80158194 排序数字 int int_ ...

  7. 【C语言】模拟实现库函数 strcpy(复制字符串内容) 与 strlen(求字符串长度)

    前言:对于库函数的使用,我们不仅要会使用方法,更要知晓使用原理,而知晓使用原理最好的方法就是模拟相应库函数的使用. 今天我们就来模拟 strcpy(复制字符串内容) 与 strlen(求字符串长度)这 ...

  8. C语言模拟实现标准库函数之strcpy()

    strcpy(dest,src) strcpy是一种C语言的标准库函数,strcpy把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间,返回值的类型为char*. char ...

  9. c语言atof函数源码,【c语言】模拟实现库函数的atof函数

    // 模拟实现库函数的atof函数 #include #include #include #include double my_atof(char const *p) { double ret = 0 ...

最新文章

  1. 在windows下配置pthread多线程
  2. python用selenium爬取网页数据_Python项目实战:使用selenium爬取拉勾网数据
  3. HAProxy Keepalived L4-L7 高可用负载均衡解决方案
  4. 如何使用Python玩转PDF各种骚操作?
  5. ArcGIS Engine开发模板及C#代码
  6. Android之图片边显示模糊原因
  7. 【bfs】重力球(luogu 7473/NOI Online 2021 普及组 T3)
  8. CocoaPods通过网络代理执行资源更新
  9. Python中jmespath解析提取json数据
  10. 超轻量级PHP框架BroPHP
  11. Spring Bean的加载过程以及一些生命周期
  12. while循环 dowhile循环 for循环(C++)
  13. 国民经济行业代码与投入产出表IO2002年行业代码
  14. Windows下C语言多线程函数_beginthread简单入门应用例子
  15. linux简易离线词典下载手机版,Linux离线查询字典的方法
  16. ofd发票怎么打开?ofd格式发票转换pdf格式发票的方法
  17. 常见几种编码格式及比较
  18. python爬虫学习7:读取起点排行榜数据
  19. H指数(h-index)的Python实现
  20. 把PDF或图片的数据导入到SPSS中的方法

热门文章

  1. ubuntu下Python虚拟环境的安装、激活、退出
  2. 怎样把视频压缩小一点?这些软件使用技巧你不能不知道
  3. excel离散度图表怎么算_“excel怎么做离散分析“EXCEL中AVEDEV计算离散度是什么?...
  4. python爬虫获取元素的属性值_趣说Python爬虫05--获取基金实时净值
  5. STM32 Proteus UCOSII系统简易时钟计时系统-0054
  6. 10个获得美好生活的小窍门
  7. 用两个栈实现队列(Java实现)
  8. 个人准则、格言、作息
  9. 蓝牙音乐之AVRCP在安卓系统中的实现
  10. Android Locale语言设置