模拟实现strstr:

在系统库函数中,存在strstr函数,它用于查找子字符串。它的函数原型为:

char *strstr( const char *string, const char *strCharSet );

这个函数中是要从*string中查找*strCharSet子字符串。因为只是查找,这两个字符串都不用发生改变,所以将他们声明为常量字符串。

模拟实现strstr:

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char *my_strstr(const char *str1, const char *str2)//模拟实现strstr函数
{assert(str1);assert(str2);char *p1 = NULL;char *p2 = NULL;char *ptr = str1;while (*ptr){p1 = ptr;p2 = str2;while (*p1 == *p2){p1++;p2++;if (*p2 == '\0'){return ptr;//此时ptr的首地址就是要查找的子字符串在的位置}}ptr++;//上面没找到,使ptr指向下一个位置继续寻找}return NULL;
}
int main()
{char arr[20] = "abcdef";char *p = "def";char *ch = my_strstr(arr, p);//查找字符串函数if (ch != NULL){printf("%p\n", ch);//找到并输出找到的字符串的地址printf("%s\n", ch);//输出字符串}else{printf("not exist\n");//没找到}system("pause");return 0;
}

转载于:https://blog.51cto.com/jiazhenzhen/1716818

模拟实现strstr相关推荐

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

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

  2. C语言 strstr函数的用法及模拟实现strstr函数

    C语言 strstr函数的用法及模拟实现strstr函数 一.strstr函数的用法 二.模拟实现strstr函数的功能 一.strstr函数的用法 1.strstr函数原型:char* strstr ...

  3. c语言strstr的使用及模拟实现strstr函数

    函数原型 const char * strstr ( const char * str1, const char * str2 ); 需要的头文件string.h 从原型可以看出它的返回值为const ...

  4. 模拟实现strstr函数,通俗易懂!!!

    函数介绍 函数声明 函数声明:char *strstr(const char *str1, const char *str2) 头  文  件:#include <string.h> 返 ...

  5. 【C语言】 strstr查找子字符串函数以及模拟实现讲解

    strstr 字符串查找函数 返回的是相同子串的第一个出现的的地址   返回类型是 char* 返回的是相同子串的第一个出现的的地址   参数是 const char* str1 ,const cha ...

  6. (C语言)模拟实现库函数strstr()

    目录 前言 实现原理: 前言         库函数strstr():const char* strstr(const char* str1,const char* str2);strstr()求字符 ...

  7. strlen strstr strtok strerror 函数解析及模拟实现

    文章目录 一.strlen 求字符串长度 1.函数介绍 2.模拟实现(三种方式) 二.strstr 字符串查找 1.函数介绍 2.模拟实现 三.strtok 字符串分割 四.strerror perr ...

  8. 学习模拟实现strlen strcmp strcpy strcat strstr等库函数

    文章目录 前言 strlen 使用方法与注意事项 模拟实现 strcmp 使用方法与注意事项 模拟实现 strcpy 使用方法与注意事项 模拟实现 strcat 使用方法与注意事项 模拟实现 strs ...

  9. 字符函数、字符串函数、内存函数用法及其模拟实现

    目录 1.strlen strlen的模拟实现 2.strcpy strcpy模拟实现 3.strcat - 字符串追加 模拟实现strcat 4.strcmp - 比较字符串 模拟实现stcmp 5 ...

最新文章

  1. 推荐10个小众简约,但是实用的软件和网站
  2. session登录练习使用解决null显示问题
  3. 图解HTTP学习记录(六)
  4. 反走样和OpenGL多重采样
  5. 推荐一个可交互的 Attention 可视化工具!我的Transformer可解释性有救啦?
  6. 给面试官讲明白:一致性Hash的原理和实践
  7. Bootstrap 如何使用字体图标
  8. kelvin模型蠕变方程_第二章:黏弹性与波传播——2.4 力学模型和波传播
  9. python numpy 数组元素周围_Python numpy数组元素属性及访问
  10. “万物互联”的时代来了!鸿蒙系统OS 2.0重磅发布:“朋友圈”逐渐扩大
  11. python画图代码大全-python 画图示例源码(Turtle Graphics)
  12. 架构之美第八章-软件架构的含义
  13. 最全,176个HFSS仿真实例模型文件分享
  14. signature=506ccff074d130c2e8d4e3268d3b44f1,Secure proxy signature schemes from the Weil pairing
  15. AI+MR遇冷后回暖,国内公司抢先卡位仍有风险待解
  16. elementUI el-upload传额外的参数
  17. 【Android】Android Window
  18. 毕设 疲劳驾驶检测系统 python
  19. 为什么需要内网穿透技术?
  20. 应用层 万维网WWW

热门文章

  1. centos系统所需软件
  2. html5效果源码,10款web前端值得学习的 HTML5 效果附源码
  3. 暖通lisp快捷键_CAD 快捷键一览
  4. nessus rpm 安装_CentOS8.0下查看已安装的软件位置
  5. QT如何让窗口放置在屏幕正中间
  6. 天翼云从业认证(4.9)工业企业上云解决方案
  7. 百练OJ:2800:垂直直方图
  8. 第13章:项目合同管理(2)-章节重点
  9. Android中怎样使用Navicat可视化查看sqllite的数据库(查看db文件)
  10. 若依前后端分离版怎样修改主页面和浏览器上的图标和标题