首页 > 其他分享 >strlen函数的模拟实现

strlen函数的模拟实现

时间:2024-11-03 11:08:38浏览次数:1  
标签:abc 函数 brr char 字符串 strlen 模拟

首先我们先新建项目,并新建源文件
然后先调用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中的数据发生改变)
我们也加上
最后运行:
运行成功!

标签:abc,函数,brr,char,字符串,strlen,模拟
From: https://www.cnblogs.com/CxstaR/p/18522988

相关文章

  • 易语言模拟真人动态生成鼠标滑动路径
    一.简介鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。鼠标轨迹算法的底层实现采用C/C++语言,原因在于C/C++提供了高性能的执行能力和直接访问操作系统底层资源的能力。鼠标轨迹算法具有以下优势:模拟人工轨迹:算法能够模拟出非贝塞尔曲线的......
  • Python模拟真人动态生成鼠标滑动路径
    一.简介鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。鼠标轨迹算法的底层实现采用C/C++语言,原因在于C/C++提供了高性能的执行能力和直接访问操作系统底层资源的能力。鼠标轨迹算法具有以下优势:模拟人工轨迹:算法能够模拟出非贝塞尔曲线的......
  • C++模拟真人动态生成鼠标滑动路径
    一.简介鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。鼠标轨迹算法的底层实现采用C/C++语言,原因在于C/C++提供了高性能的执行能力和直接访问操作系统底层资源的能力。鼠标轨迹算法具有以下优势:模拟人工轨迹:算法能够模拟出非贝塞尔曲线的......
  • 《冰汽时代2》为何叫刁民模拟器?《冰汽时代2》详细玩法介绍
    《冰汽时代2》(Frostpunk2)是11bitstudios开发的一款城市建造和生存策略游戏,是2018年大受好评的《冰汽时代》的续作。这款游戏在发布前就受到了广泛关注,部分玩家戏称其为“刁民模拟器”,这主要是因为原作中的一些特点:为什么叫“刁民模拟器”?1.道德抉择:在《冰汽时代》中,玩家......
  • json-server详细模拟GET、POST、DELETE等接口数据教程
    引言在前端开发过程中,我们经常需要在后端API尚未就绪的情况下模拟接口数据。json-server是一个强大而灵活的工具,可以帮助我们快速创建一个模拟的RESTfulAPI。本文将详细介绍如何使用json-server来模拟GET、POST、PUT、PATCH、DELETE等常用的HTTP方法,以及如何处理复杂的数......
  • python-14-函数详解(定义、参数、返回值、高级函数、偏函数、装饰器)
    python函数详解(定义、参数、返回值、高级函数、偏函数、装饰器)一.说明这是python中的基础系列中的关于函数部分,来开始我们今天日拱一卒!对python函数部分进行详细整理和学习。二.定义在Python中,函数是通过def关键字来定义函数;函数定义的结构如下deffunction_name......
  • 【字符函数以及字符串函数
    本章重点重点介绍处理字符和字符串的库函数的使用和注意事项求字符串长度strlen长度不受限制的字符串函数strcpystrcatstrcmp长度受限制的字符串函数介绍strncpystrncatstrncmp字符串查找strstrstrtok前言C语言中对字符和字符串的处理很是频繁,但是C语言本身......
  • 函数参数问题
    位置参数必选参数,必须按照位置次序,依次传入参数。defpower(x,n):s=1whilen>0:n-=1s=s*xreturns 默认参数给参数赋予值时,就是默认参数1、是必选参数在前,默认参数在后,否则Python的解释器会报错defpower(x,n=2):......
  • 函数
    函数原型下列程序输入3个整数(3个数之和不会超过整型数的最大值),计算并输出它们的平均值。下划线填入那个(些)行既不会导致编译错误也不会导致编译警告。#include<stdio.h>____________________________________________________________A)函数原型直接省略B)getAver......
  • 单双链表(数组模拟)笔记
    单双链表(数组模拟)笔记如题,我们要使用数组来模拟链表这个数据结构区别于传统的结构体链表(动态链表):structnode{ intvalue; structnode*next;//指向下一个节点的指针}user_define_name;//调用链表的别称数组模拟链表(静态链表)的速度更快,但是对于空间的优化不如动态链表......