strlen函数的模拟实现

news/2025/1/1 10:44:00/文章来源:https://www.cnblogs.com/CxstaR/p/18522988

首先我们先新建项目,并新建源文件
然后先调用sring.h里的strlen函数看看该函数的效果
可以看到strlen的结果为字符串"abc"的长度

我们又知道对于字符串"abc"实际上在字符串尾部会存在\0,即字符串arr实际上是"abc\0"

那么先定义自定义函数my_strlen

使它的返回类型为int ,接受的数组为char 类型。
然后设立一个变量i,用来计算字符串长度
使
brr遇到\0就停下来,在此之前一直保持加一位
并且当*brr不为\0时,i++



可以看到现在的代码似乎已经很好的模仿了strlen的功能
但是我们还可以进行改进

改进部分:
由逻辑推理可知当brr=\0时,\0对于条件判断相当于为0,C语言中0为假,非0为真。当brr=\0时即等同于while(0),while语句不往下执行。
所以我们可以改为这样:

然后运行:

可以看到运行结果没有问题

为了更加贴切strlen函数,让我们打开MSDN,来查看strlen这个函数

可以看到strlen的返回类型为size_t,而且char之前有const修饰(size_t是无符号的整形,相当于为0或正数;const 为常变量修饰,防止char中的数据发生改变)
我们也加上
最后运行:
运行成功!

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

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

相关文章

2024-2025-1(20241321)《计算机基础与程序设计》第六周学习总结

这个作业属于哪个课程 <班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标 <了解并学习AI功能,回顾一周课程心得>作业正文 ... 本博客链接https://www.cnblo…

Java学习十七—反射机制:解锁代码的无限可能

Java 反射(Reflection)是Java 的特征之一,它允许程序在运行时动态地访问和操作类的信息,包括类的属性、方法和构造函数。Java学习十七—反射机制:解锁代码的无限可能 一、关于反射 1.1 简介 Java 反射(Reflection)是Java 的特征之一,它允许程序在运行时动态地访问和操作类的…

行人闯红灯自动监测系统

行人闯红灯自动监测系统利用现场已有的监控摄像头,当路口有行人通过时,行人闯红灯自动监测系统设备自动监测识别是人体。一旦识别到人行横道区域有行人通行,系统就会自动判定并发出警告。同时,系统还能够识别红绿灯的状态,如果红灯亮起,系统就会通过声光联合告警,提醒行…

学校食堂互联网明厨亮灶方案

学校食堂互联网明厨亮灶方案利用现场已有的监控摄像头智能识别后厨人员穿戴情况,学校食堂互联网明厨亮灶方案针对没有戴厨师帽、口罩、工作服、玩手机、吸烟、垃圾桶未盖盖、明火离岗等违规行为的后厨人员第一时间进行识别、抓拍、报警提醒。这种方案通过AI技术实现了对后厨人…

变电站隔离刀闸状态自动识别系统

变电站隔离刀闸状态自动识别系统采用超高速动态图像并行处理算法,变电站隔离刀闸状态自动识别系统通过现场监控摄像头对隔离刀闸进行实时图像采集,并利用图像识别技术对刀闸状态进行自动判断。该系统可实现一站多组刀闸、多站多组刀闸位置、运行状态等同时检测,速度快,识别…

2,后台部署

基本流程图确保可通服务器客户端 ping 服务器外网IP地址安装应用服务通过LAMP,一键安装部署 命令生成地址:https:lnmp.org/auto.html (只针对PHP项目部署)安装服务验证检查Apache的服务是否运行sestemctl status httpd检查MySQL是否运行sestemctl status mysql检查PHP是否安装…

Python311新特性-特化指令specializing adaptive interpreter-typing-asyncio

Python311新特性-特化指令specializing adaptive interpreter-typing-asyncioPython3新特性 python3.11增加了许多特性,让python更快更加安全,本文从应用层面来讲一下python3.11的这些新特性 特化自适应解析器是什么,如何利用特化写出更高性能的代码 如何在项目中落地type h…

Python模拟真人动态生成鼠标滑动路径

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C++语言,原因在于C/C++提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟人工轨迹:算法能够模拟出非…

猿人学web端爬虫攻防大赛赛题第2题——动态cookie

题目网址:https://match.yuanrenxue.cn/match/2 解题步骤看触发的数据包。在请求头中的cookie字段中m变量的值一看就是加密过的。看Initiator模块中的request。点进去,打断点。我们只能在响应内容中看到页面数据,但是关于m的加密却是没有看到。刷新界面,出现如下画面。说明…

易语言模拟真人动态生成鼠标滑动路径

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C++语言,原因在于C/C++提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟人工轨迹:算法能够模拟出非…

C++模拟真人动态生成鼠标滑动路径

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C++语言,原因在于C/C++提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟人工轨迹:算法能够模拟出非…

‘随机失活’:人工智能真的在模仿人脑吗?

序言:过拟合是人工智能训练中的一个常见问题,类似于一位“读死书”的学生,他只能机械地背诵书本内容,缺乏灵活性,一旦题目稍有变化便无法理解。为了解决这一问题,科学家们从人脑的学习方式中获得启发,设计出“随机失活”方法。在学习过程中,随机关闭部分神经元,避免神…