| |
|
开发:
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语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |