【c语言】模拟strlen函数求字符串长度的三种方法
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函数求字符串长度的三种方法相关推荐
- 求字符串长度的三种方法(C语言)
如何求字符串的长度? 首先要明白字符串存储的原理. 字符串存储时,是以'\0'结尾,这个就可以作为判断字符串结尾的一个条件. 接下来,只要有字符串的首元素地址,就可以解决求字符串长度的问题啦! 第一种 ...
- c语言求字符串长度的三种方法(部分略微优化)
求字符串的长度,很多人都会直接想到用strlen函数,只需要头文件string.h就可以很轻松的实现,但对于我们c语言的初学者,也应该尝试用其他方法来进行实现,除了strlen函数外有三种方法可供参考 ...
- java的字符串截取函数_java 字符串截取的三种方法(推荐)|chu
众所周知,java提供了很多字符串截取的方式.下面就来看看大致有几种. 1.split()+正则表达式来进行截取. 将正则传入split().返回的是一个字符串数组类型.不过通过这种方式截取会有很大的 ...
- 字符与字符串中的‘\0‘, ‘0‘, 0;strlen()函数求字符串长度计算方法(sizeof()验证)
先问一个问题:如下字符串or字符数组,用strlen函数求长度各是多少? /*01*/char * str1 = "abc"; /*02*/char * str2 = " ...
- 求字符串长度【三种解题思路】
文章目录 一.递归法 二.指针减指针法 三.计数器法 题目:模拟实现一个strlen函数,也就是求字符串长度的函数. 一.递归法 #include<stdio.h> #include& ...
- 计算字符串长度的三种方法(库函数 指针 )【详解】
目录 求字符串长度的一般原理 方法一:strlen函数 函数原型 使用方法 方法二:指针+整数 方法三:指针-指针 总结: 求字符串长度的一般原理 求字符串长度简单来说就是计算一个字符串(字符数组)中 ...
- C语言strlen函数求字符串长度及自己实现
strlen size_t strlen ( const char * str ); 1.字符串已经'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数(不包含'\0' ...
- C++求字符串长度的两种方法
针对于string类型的,可以采用strlen 针对于wstring类型的,可以采用_tcslen方法 实例代码: //字符串测试Unicode和ansi void strControl() {std ...
- C++ 获取string字符串长度的三种方法
1.用string的成员方法length()获取字符串长度 length()比较直观,表示的就是该字符串的长度. #include <string> #include <iostre ...
最新文章
- python输入完怎么运行-教你如何编写、保存与运行Python程序的方法
- 《Java程序设计》实验报告——Java的接口与继承
- trimble ux5hp无人机航测_无人机航测:这几件事情你必须知道
- 室内设计师招募中...
- 使用DAO模式开发宠物管理系统---hellokitty
- 关于政务版本中的公文签名及签章
- 遗传算法优化SVM支持向量机分类预测的参数代码模型
- CKEditor5系列三:创建一个功能相对完善的插件
- matlab编译后方交会,后方交会MATLAB程序实习报告.docx
- 2.words平均长度
- 【电源设计】11变压器在开关电源中的应用
- C/C++内存管理器
- 计算机屏幕尺寸像素点距概念,电脑屏幕分辨率多少比较好
- 最常用的 Linux 命令都不会,你怎么敢去面试?
- 仿牛客社区项目笔记-帖子模块(核心)
- 鸿蒙系统有carp,手把手教你CarPlay怎么用?CarPlay支持车型一览
- 如何查看windows某个目录下所有文件/文件夹的大小?
- 北京到平谷石林峡旅游包车攻略
- 基于opencvFlask搭建口红图片色号识别及商品推荐系统 附完整版代码
- Redis集群节点的变更