当前位置: 首页 > news >正文

C语言 ——— 学习和使用 strstr 函数,并模拟实现

目录

strstr 函数的作用

学习 strstr 函数​编辑

使用 strstr 函数

模拟实现 strstr 函数


strstr 函数的作用

查找子字符串

返回指向 str1 中第一次出现的 str2 的指针,如果 str2 不是 str1 的一部分,则返回 null 指针


学习 strstr 函数

函数的参数:

const char* str1:指向字符串的指针,也就是目标字符串,因为不会改变原字符串,所以使用 const 关键字修饰

const char* str2:指向字符串的指针,也就是原头字符串,在目标字符串中找原头字符串

函数的返回值:

const char* :当在 str1 中 找到了 str2 ,那么就返回 str1 找到 str2 的起始位置,否则返回 NULL ,因为同样不会改变原字符串,所以使用 const 修饰


使用 strstr 函数

代码演示:

char str1[] = "abcdefeeefghijk";
char str2[] = "eefghi";printf("%s\n", strstr(str1, str2));

代码验证:

在 str1 中找到了 str2 ,那么就会从 str1 找到 str2 的位置开始返回,并往后打印,直到 '\0'


模拟实现 strstr 函数

代码演示:

char* my_strstr(char* destination, char* source)
{assert(destination);assert(source);char* p = destination;char* s1 = NULL;char* s2 = NULL;while (*p != '\0'){s1 = p;s2 = source;while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2){s1++;s2++;}if (*s2 == '\0')return p;p++;}return NULL;
}

代码解析:

p 指针用来记录匹配开始的位置,利用 s1 和 s2 同时往后走进行匹配
s1 和 s2 匹配不成功时,p 指针就指向下一个位置
s1 和 s2 匹配成功时,s1 和 s2 就同时往后走,当循环结束后,判断 s2 是否走到了 '\0'
走到了 '\0' 就说明匹配成功,返回 p 这个指针,因为 p 是记录匹配开始的位置的
否则一直匹配不成功,直到 p 指针走到 '\0',就返回 NULL

代码验证:

能匹配成功时:

匹配不成功时:


http://www.mrgr.cn/news/64437.html

相关文章:

  • 【前端基础】HTML 基础
  • JSON转换Java实体类
  • 【已解决】element-plus配置主题色后,sass兼容问题。set-color-mix-level() is...in Dart Sass 3
  • RTX5/FreeRTOS全家桶源码工程综合实战模板集成CANopen组件(2024-10-30)
  • UE5相机系统初探(一)
  • 一文了解Linux内核I2C子系统,驱动苹果MFI加密芯片
  • [Redis] Redis事务
  • 高频电子线路---一文读懂调幅
  • Ubuntu - 进入紧急模式,无法进入桌面
  • [RootersCTF2019]ImgXweb
  • Golang--DOS命令、变量、基本数据类型、标识符
  • 图文深入介绍Oracle DB link(二)
  • 【资调实习报告】华中农业大学资源调查与评价实习报告
  • 信息学奥赛一本通 1394:连接格点(grid)
  • R6:LSTM实现糖尿病探索与预测
  • 基于微信小程序的校园失物招领系统的研究与实现(V4.0)
  • 0-1规划的求解
  • Java 中 HashMap集合使用
  • wireshark抓包查看langchain的ChatOpenAI接口发送和接收的数据
  • next项目app router 中layout命名规范
  • ViT面试知识点
  • Google Guava 发布订阅模式/生产消费者模式 使用详情
  • SpringMVC的执行流程以及运行原理
  • 单链表OJ题(3):合并两个有序链表、链表分割、链表的回文结构
  • Oracle视频基础1.4.2练习
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十. 多线程控制帧率。