字符串函数的模拟实现(除strlen外,之前写过一篇专门的strlen)

文章目录

    • 概要
    • strcpy的模拟实现
    • strcmp的模拟实现
    • strcat的模拟实现
    • 小结

概要

字符串函数需要包含头文件<string.h>
为了更加了解字符串函数的原理,这里我们实现一些字符串函数,例如strcpy,strcmp,strcat;
要模拟实现字符串函数的功能,首先要了解他们是干什么的,下面与模拟实现一起说了;

strcpy的模拟实现

  1. strcpy:str是string,cpy是copy,顾名思义strcpy是将一个字符串复制给另一个字符串,
    在这里插入图片描述
    由此可见strcpy的功能;
  2. 根据strcpy的功能我们自己写一个函数my_strcpy
    在这里插入图片描述
    最后一行是为了获取原字符串的 ‘\0’
    这里利用指针来实现功能,因为比较简单就不在详细说了
  3. 因为我们对这个代码简洁度不太满意吧
    然后进行了简化如下:
    在这里插入图片描述
    当*tar == '\0’时ASCII码值也为0,循环停止;

strcmp的模拟实现

  1. strcmp:str是string,cmp是compare,因为我们不能用><=来比较字符串,所以strcmp是用来进行字符串的比较的,他比较的原理就是一个字符一个字符的比较;
    在这里插入图片描述
    根据上面我们可以退出当一个字符串比另一个字符串大的时候返回一个大于0的数,当一个字符串比另一个字符串小的时候返回一个小于0的数,当两个字符串相等时返回0;
  2. 根据上面的特性我们对strcmp进行模拟实现建立一个my_strcmp
    在这里插入图片描述

strcat的模拟实现

  1. strcat:str是string,cat是catenate,常常用来进行字符串的连接,
    在这里插入图片描述
    根据上图可知strcat是将后面的字符串连接到前面字符串的后面
  2. 接下来我们对他进行模拟实现,建立my_strcat
    首先我们来找到前面字符串的’\0’
    在这里插入图片描述
    接下来在后面连接就可以了
    在这里插入图片描述

小结

通过对字符串函数的模拟实现有助于我们更加了解字符串函数的工作原理;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/615455.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT drawPixmap和drawImage处理图片模糊问题

drawPixmap和drawImage显示图片时&#xff0c;如果图片存在缩放时&#xff0c;会出现模糊现象&#xff0c;例如将一个100x100 的图片显示到30x30的区域&#xff0c;这个时候就会出现模糊。如下&#xff1a; 实际图片&#xff1a; 这个问题就是大图显示成小图造成的像素失真。 当…

机器学习—数据集(二)

1可用数据集 公司内部 eg:百度 数据接口 花钱 数据集 学习阶段可用的数据集&#xff1a; sklearn:数据量小&#xff0c;方便学习kaggle&#xff1a;80万科学数据&#xff0c;真实数据&#xff0c;数据量大UCI&#xff1a;收录了360个数据集&#xff0c;覆盖科学、生活、经济等…

基于springboot+vue的汽车租赁管理系统

背景介绍: 网络发展的越来越迅速&#xff0c;它深刻的影响着每一个人生活的各个方面。每一种新型事务的兴起都是为了使人们的生活更加方便。汽车租赁管理系统是一种低成本、更加高效的电子商务方式&#xff0c;它已慢慢的成为一种全新的管理模式。人们不再满足于在互联网上浏览…

不会搭建ERP帮助中心的看过来,这篇文教会你

企业资源规划&#xff08;Enterprise Resource Planning, ERP&#xff09;系统是支撑公司核心业务的大脑。但你知道吗&#xff0c;没有一个好用、易懂的帮助中心&#xff0c;就像给这个大脑裹上了层层蚕丝&#xff0c;难以发挥它的最大潜能。那么&#xff0c;怎样才能搭建一个优…

深度学习相关知识

目录 一.环境安装 1.cuda/cudnn安装&#xff1a; 2.Pytorch&#xff0c;torchvision安装 3. TensorRT安装C版本&#xff1a; 4.onnxRuntime安装&#xff1a; 二.基础知识 1.Onnx、onnxTime、wts和TensorRT 2. 模型部署 3. 深度学习简介 4. Loss函数 5. 激活函数 一.环…

杰发科技AC7840——CAN通信简介(4)_过滤器设置

0. 简介 注意&#xff1a;过滤器最高三位用不到&#xff0c;因此最高位随意设置不影响过滤器。 1. 代码分析 注意设置过滤器数量 解释的有点看不懂 详细解释...也看不大懂 Mask的第0位是0&#xff0c;其他位都是1(就是F?)&#xff0c;那就指定了接收值就是这个数&#xff0c;…

【cmake安装】研发环境搭建之cmake安装

背景 因为项目需求&#xff0c;需要家里的Win10 PC安装Ubuntu 20.04虚拟机并搭建编译环境&#xff0c;需要安装cmake编译环境 直接命令安装即可 sudo apt install cmake安装成功后&#xff1a; 3.16版本暂时也够用了

SVM向量支持机

1.通俗理解 svm&#xff1a;support vector machine目标&#xff1a;利用超平面将两类数据分割开来&#xff0c;这个超平面就是我们要设计的对象 如何设计&#xff1f;我们设计之后会有间隔&#xff0c;间隔越大分类效果就越好&#xff1b;距离决策边界最近的点我们成为支持向…

【嵌入式基础知识学习】AD/DA—数模/模数转换

AD/DA—数模/模数转换概念 数字电路只能处理二进制数字信号&#xff0c;而声音、温度、速度和光线等都是模拟量&#xff0c;利用相应的传感器&#xff08;如声音用话筒&#xff09;可以将它们转换成模拟信号&#xff0c;然后由A/D转换器将它们转换成二进制数字信号&#xff0c…

【Java】第十五届蓝桥杯JavaB组第一道填空题

&#xff03;【Java】第十五届蓝桥杯JavaB组第一道填空题 大家好 我是寸铁&#x1f44a; 总结了一篇【Java】第十五届蓝桥杯JavaB组第一道填空题文章 喜欢的小伙伴可以点点关注 &#x1f49d; Java B组 第一道填空题题解如下:

Unity之Unity面试题(三)

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity之Unity面试题&#xff08;三&#xff09; TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取…

鸿蒙TypeScript学习第14天:【联合类型】

1、TypeScript 联合类型 联合类型&#xff08;Union Types&#xff09;可以通过管道(|)将变量设置多种类型&#xff0c;赋值时可以根据设置的类型来赋值。 注意&#xff1a;只能赋值指定的类型&#xff0c;如果赋值其它类型就会报错。 创建联合类型的语法格式如下&#xff1…