前言

使用三种不同的方式实现strlen函数,也称为myStrlen(),分别使用计算器版本,递归版本,指针-指针


1.使用计数器版本

#include <stdio.h>
#include <string.h>
#include <assert.h>
int myStrlen(const char* str) //把字符数组的首地址给str指针
{int count = 0;assert(str != NULL);while (*str != '\0') //str解引用后判断是否是\0{count++;str++;  //指针后移}return count;
}
int main(void)
{char arr[] = "abc";  // \0之前的字符,不包含\0//char arr[] = {'a', 'b', 'c'}; // 此处没有\0,一直找到\0才能找到结束标志int len = myStrlen(arr);//printf("%d\n", len);return 0;
}

2.指针减指针

      int myStrlen(char* str){char* start = str;while(*str != '\0'){str++;}return str - start;}

3.递归法

int myStrlen(const char *str)
{if(*str == '\0')return 0;elsereturn myStrlen(str+1)+1;//这种方法不使用任何变量和库函数,到结尾\0才结束
}

求字符串长度Strlen的三种方式相关推荐

  1. js字符串截取函数的三种方式(slice()、substring()、substr())

    在js中字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与区别吧 ...

  2. C语言-求字符串长度-strlen()与sizeof()

    需要在代码头部加上标准库<string.h> 代码示例 #include <string.h>char s1[20] = "hello world"; ch ...

  3. C# 对象与JSON字符串互相转换的三种方式

    JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 关于内存对象和JSON字符串的相互转换,在实际项目中应比较广泛,经过一番搜索,找到如下 ...

  4. 光斑质心检测之曲线拟合求亚像素位置的三种方式

    光斑质心检测进行图像卷积之后,需对计算结果矩阵进行曲线拟合,以求出质心的亚像素坐标. 拟合的目的在于找出图像中灰度值最高的亚像素点的位置,Xmax,Ymax: 例:对图像中相邻的三点(x1 , gra ...

  5. Shell 字符串转数组的三种方式

    string="郭靖,黄蓉,神雕侠" **方式一:** array=(`echo $string | tr ',' ' '` ) **方式二:** array=(${string/ ...

  6. 字符串转对象的三种方式

    JSON.parse( str ) // 定义一个对象字符串 var str = '{"error":1,"data":"用户不存在"}'; ...

  7. 三种方法求字符串长度

    在求字符串长度时,第一时间会想到运用strlen这个函数,但对于初学者来说,除了掌握这个函数之外,还应当自己写函数来实现相似的功能. 接下来我列举了三种方法来求字符串长度,供大家参考: (1)运用st ...

  8. 求字符串长度【三种解题思路】

    文章目录 一.递归法 二.指针减指针法 三.计数器法   题目:模拟实现一个strlen函数,也就是求字符串长度的函数. 一.递归法 #include<stdio.h> #include& ...

  9. 求字符串长度的三种方法(C语言)

    如何求字符串的长度? 首先要明白字符串存储的原理. 字符串存储时,是以'\0'结尾,这个就可以作为判断字符串结尾的一个条件. 接下来,只要有字符串的首元素地址,就可以解决求字符串长度的问题啦! 第一种 ...

最新文章

  1. 多线程:pthread_cond_wait 实现原理
  2. POJ 1207 The 3n + 1 problem
  3. python处理excel文件-python读取excel文件
  4. vim——打开多个文件、同时显示多个文件、在文件之间切换
  5. haproxy配置文件详解--转
  6. 基于modelsim的十个Verilog入门试验程序(1)(7人表决器+算术逻辑单元)—程序+测试代码+波形+结果分析
  7. MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令
  8. Suse11开启SSH密码登录
  9. Python str转为list list转为str
  10. 百度编辑器UEditor图片上传尺寸大小设置
  11. BTA | 厉晹Roy Li:浅谈区块链技术在企业级应用中的实践
  12. JXTheme:iOS9+换肤/暗黑模式最佳方案之一,轻量级、高度自定义、swift编写
  13. drupal用户注册邮件smtp及社会化登录模块安装
  14. 苹果开放降级_苹果新系统上线,只为M1芯片?
  15. Matlab 界面设计简单入门(App Designer)
  16. 亚马逊登陆显示服务器出错,Amazon CloudFront常见错误配置及解决方法
  17. 图像迁移风格保存模型_图像风格迁移
  18. 使用EKF融合odometry及imu数据
  19. Flink 系例 之 CountWindowAll
  20. 「解析」Self-Attention 关键点

热门文章

  1. 程序员面试及机考完全指南
  2. 强烈DISS pyshark
  3. Linux驱动之阻塞与非阻塞
  4. Ubuntu18.04系统下charm-crypto0.5的安装以及测试
  5. 零基础学习软件测试,掌握四点就够了
  6. 用vue做轮播图 关于require的用法
  7. excel随机生成数字或者字母
  8. 特别行动队[斜率优化]
  9. ASEMI代理ADUM3211TRZ-RL7原装ADI车规级ADUM3211TRZ-RL7
  10. 第4节 批处理文件及示例