字符串函数strchr 、 strrchr 、strrstr的实现

2023-05-16

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char *my_strchr(const char *dst, char c)         //由于我们只是查找,不修改这个字符串,所以将dst声明成const
{
	assert(dst);                                   //先对字符串进行断言
	const char *pdst = dst;                    //将字符串其实位置保存下来
	while (*pdst)
	{
		if (*pdst == c)                       //找到就返回这个地址
			return (char *)pdst;
		else                                           
			pdst++;
	}
	return NULL;                                    //没找到返回空
}
int main()
{
	char c=0;
	char arr[40]={0};
	char * = NULL;
	scanf("%c", &c);
	scanf("%s", arr);
	str=my_strchr(arr, c);
	printf("%#p\n",*str);
	system("pause");
	return 0;
}


#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char *my_strrchr(const char *src, char c)         //由于我们只是查找,不修改这个字符串,所以将src声明成const
{
	assert(src);                                   //先对字符串进行断言
	const char *psrc = src;
	char *dst = NULL;
	while (*psrc)
	{
		if (*psrc == c)
			dst =(char *) psrc;              //用标签记录找到的位置
		psrc++;
	}
	return dst;
}
int main()
{
	char c = 0;
	char arr[40];
	char *place = NULL;
	scanf("%c%s", &c, arr);
	place = my_strrchr(arr, c);
	printf("%#p\n",place);
	system("pause");
	return 0;
}


//strrstr库里面没有,我们仿照strchr这个函数的功能实现一个strrstr
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char *my_strrstr(const char *dst, const char *src)
{
	assert(dst);
	assert(src);
	const char *pdst = dst;
	const char *psrc = src;
	char *right= NULL;
	while (*dst)
	{
		while (*pdst == *psrc)                      
		{
			if (*pdst== '\0')                     //如果*pdst为‘\0'则已经找到最后一个
				return right=(char *)dst;
			else
			{
				pdst++;
				psrc++;
			}
		}
		if (*psrc == '\0')                        //找到一个,但不确定是不是最后一个
			right = (char *)dst;
		pdst = ++dst;
		psrc = src;
	}
	return right;
}
int main()
{
	char arr1[50] = { 0 };
	char arr2[40] = { 0 };
	char *place = NULL;
	scanf("%s%s",arr1, arr2);
	place = my_strrstr(arr1, arr2);
	printf("%#p\n",place);                                     //输出这个地址
	system("pause");
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字符串函数strchr 、 strrchr 、strrstr的实现 的相关文章

  • Intel 深度摄像D435i 的标定

    这个官方的标定链接 xff0c 先下载这个的pdf 文件在本地容易学习 xff1a https www intel com content www us en support articles 000032303 emerging tech
  • 树莓派Raspberry Pi上安装intel realsense 深度摄像头D435i

    全部按照官方 xff1a https github com IntelRealSense librealsense blob master doc installation raspbian md 更新系统到最新 xff0c 然后再启动 x
  • ROS应用开发入门 服务数据的定义和使用

    ROS是机器人操作系统的简称 xff0c 本文介绍ROS应用开发入门 xff0c 服务数据的定义和使用 客户端和服务端 之间通讯都使用服务数据 service data 本文先定义一个服务数据 xff0c 编译成功后 xff0c 用一个服务
  • ROS应用开发入门 tf 坐标系广播与监听的编程(python)

    ROS是机器人操作系统的简称 xff0c 本文介绍ROS应用开发入门 xff0c TF坐标系广播与监听的编程 小乌龟仿真中有2只乌龟 xff0c 键盘控制第1只乌龟走动 xff0c 2只乌龟都都广播自己的坐标 监听器听取2个乌龟的坐标 xf
  • 计算机保研面试常见问题(408数据结构简答题)

    1 什么是时间复杂度 xff1f O xff08 n xff09 的O代表了什么 xff1f 答 xff1a 时间复杂度是指执行算法所需要的计算工作量 xff0c 可以用于描述一个程序的规模 O xff08 n xff09 中的O表示的是最
  • 计算机保研面试常见问题(408操作系统简答题)

    1 操作系统的特点和功能是什么 xff1f 答 xff1a 操作系统的特点是并发 共享 虚拟 异步 其中 xff0c 并发和共享是操作系统主要的特点 操作系统的功能主要包括 xff1a 处理机管理 存储器管理 设备管理和文件管理等 操作系统
  • 计算机保研面试常见问题(408计算机网络简答题)

    1 能介绍一下OSI七层模型各层之间的功能与对应的协议吗 xff1f 答 xff1a OSI七层模型自底向上依次是 xff1a 物理层 数据链路层 网络层 运输层 会话层 表示层 应用层 各层的功能与相应的协议有 xff1a 物理层 xff
  • 从高考到程序员

    记得当年进入考场的时候也是志气满满 xff0c 心里念叨着一定要考上自己理想的大学 xff0c 光宗耀祖 当时坐在学校安排的bus上向考场的方向行进 xff0c 看到路边的交警叔叔 xff0c 情不自禁的喊了一声 xff0c 交警大哥辛苦了
  • 【姿态估计】Pose estimation algorithm 之 Robust Planar Pose (RPP)algorithm

    The RPP algorithm gives a more stable tracking less jitter than ARToolKit 39 s pose estimation algorithm The robust pose
  • STM32中,关于中断函数调用全局变量的问题

    本人菜鸟小白一枚 xff0c 第一次记录自己在学习中遇到的问题 xff0c 也当是与各位交流交流 首先是问题的描述 xff1a 硬件单片机型号 xff0c STM32F103VET6 xff0c IDE xff1a keil 5 想通过它实
  • 关于FreeRTOS操作系统遇到的一些小问题

    1 故障描述 今天在学习FreeRTOS操作系统关于计数量信号实验这一块的时候遇到了一个非常有意思的实验现象 就是程序任务的启动流程都是设置正确的 xff0c 但是两任务会有一个任务进不去 程序代码如下 include 34 bsp con
  • geometry_msgs::PointStamped

    geometry msgs PointStamped geometry msgs PointStamped File geometry msgs PointStamped msg PointStamped代表了一个带有参考坐标系和时间戳的点
  • 2030年的人工智能与生活(AI and Life in 2030)

    作者 xff1a Anqi 链接 xff1a https zhuanlan zhihu com p 22308870 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业转载请注明出处 第一部分 xff1
  • FreeRTOS学习-day01

    FreeRTOS学习 day00 xff08 废话篇 xff09 书籍是 xff1a 使用两本书 正点原子 和 野火 野火 FreeRTOS 内核实现与应用开发实战 基于STM32 教程 正点 FreeRTOS源码与应用 STM32F1 F
  • 要写好综述类论文?这几个点你需要注意

    一 引 言 不管是哪种学科的哪种研究 xff0c 文献综述必不可少 文献综述具有承上启下的作用 xff0c 是学术研究和学术论文写作的一个重要环节 通过文献综述 xff0c 我们可以了解相关领域的研究现状 xff0c 在前人研究的基础上确定
  • 文献综述难点解析

    文献综述难在三点 xff1a 在研究的不同阶段 xff0c 读文献的目的是不同的 xff0c 如何搜索 如何选择文献 如何阅读 如何做笔记等的策略也是不同的 xff0c 需要我们不断换挡 xff1b 综合 xff08 synthesizin
  • gitee团队合作,上传文件到别人的Gitee仓库

    首先要确保在别人的Gitee项目中 项目创建人可以通过邀请拉其他人进入Gitee项目中 下面开始上传 第一步 xff0c 在任意位置 xff0c 基本上选择桌面 新建一个文件夹 xff0c 在里面点击右键 xff0c 选择 Git Bash
  • ROS教程(四):RVIZ使用教程(详细图文)

    ros教程 xff1a rviz使用教程 文章目录 前言一 RVIZ介绍1 数据类型介绍2 界面介绍 二 发送基础形状至RVIZ xff08 C 43 43 xff09 1 创建程序包2 创建节点3 编辑代码如下 xff08 示例 xff0
  • 基于二维激光雷达的三维激光扫描系统的设计与实现

    CSDN话题挑战赛第2期 参赛话题 xff1a 学习笔记 学习之路 xff0c 长路漫漫 xff0c 写学习笔记的过程就是把知识讲给自己听的过程 这个过程中 xff0c 我们去记录思考的过程 xff0c 便于日后复习 xff0c 梳理自己的
  • Eigen库使用简介

    Eigen是开源的C 43 43 线性代数库 xff0c 常用在计算机图形学中 有份英文的Eigen使用手册 xff0c 简要整理一下 安装 span class token builtin class name cd span span

随机推荐