1.借助中间变量(常规方法)

#include<stdio.h>
int my_strlen(char* str)//接收了数组首元素的地址
{int count = 0;while (*str != '\0'){count++;str++;//下一元素的地址}return count;}
int main()
{char arr[] = "haha";printf("%d\n", my_strlen(arr));return 0;
}

因为strlen求的是\0之前的字符个数,那么就可以while循环,遇到\0之前都可以count++,所以只需利用指针即可

2.递归方法模拟

递归出口是遇到\0,否则递归就会一直进行下去

int my_strlen(char* str)
{if (*str != '\0'){return 1 + strlen(str + 1);//str+1指的是下一个字符的地址}else{return 0;}
}
int  main()
{char arr[] = "haha";printf("%d\n", my_strlen(arr));return 0;
}

3.指针相减法

指针相减得到的是两个指针之间的元素个数(c语言语法所规定的)

所以只需要求数组的第一个字符地址和最后一个字符(‘\0’)的地址就可以求出元素个数

int my_strlen(char* str)
{char* start = str;//str是数组第一个字符的地址while (*str != '\0'){str++;//总共5个字符,str最终会指向\0}return str - start;
}
int  main()
{char arr[] = "haha";printf("%d\n", my_strlen(arr));return 0;
}

【c语言】模拟strlen函数求字符串长度的三种方法相关推荐

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

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

  2. c语言求字符串长度的三种方法(部分略微优化)

    求字符串的长度,很多人都会直接想到用strlen函数,只需要头文件string.h就可以很轻松的实现,但对于我们c语言的初学者,也应该尝试用其他方法来进行实现,除了strlen函数外有三种方法可供参考 ...

  3. java的字符串截取函数_java 字符串截取的三种方法(推荐)|chu

    众所周知,java提供了很多字符串截取的方式.下面就来看看大致有几种. 1.split()+正则表达式来进行截取. 将正则传入split().返回的是一个字符串数组类型.不过通过这种方式截取会有很大的 ...

  4. 字符与字符串中的‘\0‘, ‘0‘, 0;strlen()函数求字符串长度计算方法(sizeof()验证)

    先问一个问题:如下字符串or字符数组,用strlen函数求长度各是多少? /*01*/char * str1 = "abc"; /*02*/char * str2 = " ...

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

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

  6. 计算字符串长度的三种方法(库函数 指针 )【详解】

    目录 求字符串长度的一般原理 方法一:strlen函数 函数原型 使用方法 方法二:指针+整数 方法三:指针-指针 总结: 求字符串长度的一般原理 求字符串长度简单来说就是计算一个字符串(字符数组)中 ...

  7. C语言strlen函数求字符串长度及自己实现

    strlen size_t strlen ( const char * str ); 1.字符串已经'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数(不包含'\0' ...

  8. C++求字符串长度的两种方法

    针对于string类型的,可以采用strlen 针对于wstring类型的,可以采用_tcslen方法 实例代码: //字符串测试Unicode和ansi void strControl() {std ...

  9. C++ 获取string字符串长度的三种方法

    1.用string的成员方法length()获取字符串长度 length()比较直观,表示的就是该字符串的长度. #include <string> #include <iostre ...

最新文章

  1. python输入完怎么运行-教你如何编写、保存与运行Python程序的方法
  2. 《Java程序设计》实验报告——Java的接口与继承
  3. trimble ux5hp无人机航测_无人机航测:这几件事情你必须知道
  4. 室内设计师招募中...
  5. 使用DAO模式开发宠物管理系统---hellokitty
  6. 关于政务版本中的公文签名及签章
  7. 遗传算法优化SVM支持向量机分类预测的参数代码模型
  8. CKEditor5系列三:创建一个功能相对完善的插件
  9. matlab编译后方交会,后方交会MATLAB程序实习报告.docx
  10. 2.words平均长度
  11. 【电源设计】11变压器在开关电源中的应用
  12. C/C++内存管理器
  13. 计算机屏幕尺寸像素点距概念,电脑屏幕分辨率多少比较好
  14. 最常用的 Linux 命令都不会,你怎么敢去面试?
  15. 仿牛客社区项目笔记-帖子模块(核心)
  16. 鸿蒙系统有carp,手把手教你CarPlay怎么用?CarPlay支持车型一览
  17. 如何查看windows某个目录下所有文件/文件夹的大小?
  18. 北京到平谷石林峡旅游包车攻略
  19. 基于opencvFlask搭建口红图片色号识别及商品推荐系统 附完整版代码
  20. Redis集群节点的变更

热门文章

  1. 清览题库--C语言程序设计第五版编程题解析(3)
  2. 使用python_openslide剪切大型tif图
  3. 电力系统【第八章:电力系统不对称故障的分析与计算】
  4. 俄罗斯最大社交网站(vk.com)被黑一亿数据 附图
  5. FreeModbus开源协议简介
  6. php写后台轮播图,dedecms图片相关问题—后台上传图片实现图片轮播
  7. js获取url地址参数
  8. Hadoop 3.0 纠删码技术分析(Erasure Coding)
  9. 【MinIO理论】MinIO Erasure Code Quickstart Guide
  10. 用74LS153D画出三人表决电路