IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言常用字符串、内存函数的实现 -> 正文阅读

[C++知识库]C语言常用字符串、内存函数的实现

我在后面附上了所有的源码

模拟实现函数的总结:

1.模拟实现的首先我们要了解函数的功能

2.实现函数需要的参数以及返回类型

3.尽量不要使用局部变量的地址作为函数的返回类型

4.对任意类型的数据进行操作可以转化为void*后在强制转化为char*

1.求字符串长度

strlen

实现strlen函数相对简单

法一:是利用count计数循环,找到’\0‘,来确定字符串的长度

法二:利用递归的思想,每次分解问题都+1,找到最后一位为’\0‘

法三:利用char*指针不断循环找到'\0',然后指针与指针相减的结果就是元素个数

?

2.长度不受限制的字符串函数

strcpy

1.首先我们用assert进行断言,防止空指针作为参数传入,将源字符用const修饰防止不经意间的修改

2.我们创建一个指针来记录目标地址的首地址

3.通过循环不断将源字符串的数据赋值给目的字符串

4.可以将*Sur != '\0'作为循环条件,当不满足条件时,说明元字符串已经完全赋值个目的字符串

?

strcat

1.首先我们用assert进行断言,防止空指针作为参数传入,将源字符用const修饰防止不经意间的修改

2..创建一个指针来记录目标地址的首地址,防止最后指向目的字符串的指针丢失

3将源字符串添加到目的字符串的末尾,我们要先找到目的字符串的末尾,

4.当我们找到的字符串的末尾后直接将源字符串的元素赋值

5.赋值后返回我们记录目的字符串的原地址。

?

strcmp

1.首先我们用assert进行断言,防止空指针作为参数传入,将源字符用const修饰防止不经意间的修改

2.对比字符串,我们是对单个字符的比较,来决定大小。

3.首先我们先判断俩个字符是否相等,不相等然后比较大小,若是相等则直接+1,跳向下一个字符

?

3.字符串查找

strstr

1.先判断str2是否为空字符串,空字符串是任何源字符串的字串

2.一共有三个指针,俩个个指向主字符串,一个指向次字符串,

我们先思考一下,我们在判断次字符串是否为主字符串的字串时可能遇到的情况

????????1.直接一一对应,那么返回直接返回主字符串

????????2.开始没有找到,在中间,或其他位置,找到并且一一对应

????????3.找到之后,对应上一个或俩个又发现并不完全对应

3.1、2俩种情况相对处理任意,第三中情况,就需要我们的三指针了,当对应上以后一个指针记录上当前的位置,如果再次对应,则++,并且查看是否次字符串是否结束,否则重新回到记录的上次对应位置开始++后再次判断是否对应。

4.内存操作函数

memcpy

1.首先我们用assert进行断言,防止空指针作为参数传入,将源字符用const修饰防止不经意间的修改.

2.与strcpy相似,我们先记录目的字符串的地址,然后以需要改变的字节数为控制循环的条件,因为我们使用void*接受的指针,在赋值的时候我们需要将其强制转化为char*指针,

?

memmove

?

1.相比memcpy,memmove更加强大,安全,它可以说是memcpy的升级

2.他的作用是可以将数组元素复制重负的地方也可以复制到目的

3.下面这种情况使用memcpy将蓝色的复制到红色地址的结果就不会是123,而是121

我们为了解决这种问题,可以从3复制到1,然后就不会覆盖到未复制额数据

?

这种情况应该直接正数着赋值

?

?

memcmp

?

1.我们先分析循环的条件,首先需要对比的字节数,然后如果俩个字节相等则下一个,否则对比出结果

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 10:38:58  更:2022-01-24 10:40:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:10:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码