求字符串长度Strlen的三种方式
前言
使用三种不同的方式实现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的三种方式相关推荐
- js字符串截取函数的三种方式(slice()、substring()、substr())
在js中字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与区别吧 ...
- C语言-求字符串长度-strlen()与sizeof()
需要在代码头部加上标准库<string.h> 代码示例 #include <string.h>char s1[20] = "hello world"; ch ...
- C# 对象与JSON字符串互相转换的三种方式
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 关于内存对象和JSON字符串的相互转换,在实际项目中应比较广泛,经过一番搜索,找到如下 ...
- 光斑质心检测之曲线拟合求亚像素位置的三种方式
光斑质心检测进行图像卷积之后,需对计算结果矩阵进行曲线拟合,以求出质心的亚像素坐标. 拟合的目的在于找出图像中灰度值最高的亚像素点的位置,Xmax,Ymax: 例:对图像中相邻的三点(x1 , gra ...
- Shell 字符串转数组的三种方式
string="郭靖,黄蓉,神雕侠" **方式一:** array=(`echo $string | tr ',' ' '` ) **方式二:** array=(${string/ ...
- 字符串转对象的三种方式
JSON.parse( str ) // 定义一个对象字符串 var str = '{"error":1,"data":"用户不存在"}'; ...
- 三种方法求字符串长度
在求字符串长度时,第一时间会想到运用strlen这个函数,但对于初学者来说,除了掌握这个函数之外,还应当自己写函数来实现相似的功能. 接下来我列举了三种方法来求字符串长度,供大家参考: (1)运用st ...
- 求字符串长度【三种解题思路】
文章目录 一.递归法 二.指针减指针法 三.计数器法 题目:模拟实现一个strlen函数,也就是求字符串长度的函数. 一.递归法 #include<stdio.h> #include& ...
- 求字符串长度的三种方法(C语言)
如何求字符串的长度? 首先要明白字符串存储的原理. 字符串存储时,是以'\0'结尾,这个就可以作为判断字符串结尾的一个条件. 接下来,只要有字符串的首元素地址,就可以解决求字符串长度的问题啦! 第一种 ...
最新文章
- 多线程:pthread_cond_wait 实现原理
- POJ 1207 The 3n + 1 problem
- python处理excel文件-python读取excel文件
- vim——打开多个文件、同时显示多个文件、在文件之间切换
- haproxy配置文件详解--转
- 基于modelsim的十个Verilog入门试验程序(1)(7人表决器+算术逻辑单元)—程序+测试代码+波形+结果分析
- MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令
- Suse11开启SSH密码登录
- Python str转为list list转为str
- 百度编辑器UEditor图片上传尺寸大小设置
- BTA | 厉晹Roy Li:浅谈区块链技术在企业级应用中的实践
- JXTheme:iOS9+换肤/暗黑模式最佳方案之一,轻量级、高度自定义、swift编写
- drupal用户注册邮件smtp及社会化登录模块安装
- 苹果开放降级_苹果新系统上线,只为M1芯片?
- Matlab 界面设计简单入门(App Designer)
- 亚马逊登陆显示服务器出错,Amazon CloudFront常见错误配置及解决方法
- 图像迁移风格保存模型_图像风格迁移
- 使用EKF融合odometry及imu数据
- Flink 系例 之 CountWindowAll
- 「解析」Self-Attention 关键点