在求字符串长度时,第一时间会想到运用strlen这个函数,但对于初学者来说,除了掌握这个函数之外,还应当自己写函数来实现相似的功能。

接下来我列举了三种方法来求字符串长度,供大家参考:

(1)运用strlen

注意点:运用该函数时需注意包含string.h头函数

#include<stdio.h>
#include<string.h>
int main()
{char ch[] = "abcdefg";int len = strlen(ch);printf("字符串长度为%d\n", len);return 0;
}

(2)自定义my_strlen函数

注意点:拿“abcdefg”字符串举个例子,它在内存中存储的样式为a b c d e f g \0,统计字符串的长度也就是要统计“\0”之前的字符有多少。

那么,设置两个变量,一个用来依次访问字符串中的每一个字符,一个用来统计数量。

#include<stdio.h>
int my_strlen(char ch[])
{int i = 0;int num = 0;while (ch[i] != '\0'){i++;num++;}return num;
}
int main()
{char ch[] = "abcdefg";int len = my_strlen(ch);printf("字符串长度为%d\n", len);return 0;
}

(3)用字符型指针和递归来实现

注意点:求"abcdefg"的字符串长度,可以将其看成1+my_strlen(bcdefg)->1+1+my_strlen(cdefg)->1+1+1+my_strlen(defg)->...一直到指针指向'\0'为止。

#include<stdio.h>
int my_strlen(char* pr)
{if (*pr != '\0'){return my_strlen(pr + 1) + 1;}else{return 0;}
}
int main()
{char ch[] = "abcdefg";int len = my_strlen(ch);printf("字符串长度为%d\n", len);return 0;
}

三种方法求字符串长度相关推荐

  1. 四种方法求字符串长度

    使用四种方法求字符串的长度 话不多说, 直接上代码: #include<stdio.h> #include<string.h>//计数器方法 int my_strlen1(ch ...

  2. 【数学知识】三种方法求 [1,n] 中所有数欧拉函数(线性筛欧拉函数优化至 O(n) )

    整理的算法模板合集: ACM模板 ①直接求小于或等于n,且与n互质的数个数(求[1,n]中所有数的欧拉函数时间复杂度:O(nn)O(n\sqrt{n})O(nn​)) ②求[1,n]之间每个数的质因数 ...

  3. 三种方法求最大公约数及求n个数的最小公倍数

    一.三种方法求两个数的最大公约数 (1) 辗转相除法 辗转相除法求最大公约数是一种常用的求两个数的最大公约数的方法. 方法是: 以小数除大数,如果能整除,那么小数就是所求的最大公约数.否则就用余数来除 ...

  4. 三种方法求最大公约数(C语言版)

    问题描述:用三种方法求两个的整数的最大公约数. 算法分析: 1.相减法:输入两整数a和b,(1)如果a>b,a=a-b;(2)如果a<b,b=b-a;(3)如果a=b,a或b就为这两个整数 ...

  5. C++算法:三种方法求最大公约数和最小公倍数

    三种方法求最大公约数和最小公倍数标题 首先明确最大公约数和最小公倍数的关系,设两个数为a,b:最大公约数为c,最大公倍数为d: 则ab=cd;怎么得到的可以通过数学算式证明. 分别用暴力搜索法,辗转相 ...

  6. 机器学习中的矩阵求导的一点总结(三种方法求线性回归最佳参数)

    机器学习中的矩阵求导的一点总结(三种方法求线性回归最佳参数) 转载于:https://blog.csdn.net/promisejia/article/details/80159619?ops_req ...

  7. Java中用三种方法输出字符串_java中两个字符串连接的三种方法

    java中两个字符串连接有以下三种方法: 第一种方法:使用+: 第二种方法:使用concat(): 第三种方法:使用append(): 如下代码: public class Practice { // ...

  8. java持久层用文件_JAVA中用三种方法将字符串持久化到文件中

    经常需要将数据进行持久化,而我们的文件系统是最古老也是最可靠的保存方式.这里就给出一个在JAVA中把字符串保存到文件中的例子.如下: package test.base; import java.io ...

  9. 三种方法求递归算法的时间复杂度(递推,master定理,递归树)

    三种方法: 递推方法求递归算法的时间复杂性 Master定理方法求递归算法时间复杂性 递归树求解递归方程 1.递推方法求递归算法的时间复杂度 我们先来看一个经典的案例,汉诺塔问题 汉诺塔(Hanoi ...

最新文章

  1. [BZOJ3337] ORZJRY I --块状链表大毒瘤
  2. OpenCV3实现人脸识别(三)——训练与识别自己的人脸数据
  3. Angular JS 中的内置方法之$watch
  4. 一个static和面试官扯了一个小时,舌战加强版
  5. #{}不自动改参数类型_如何在不刷新页面的情况下改变URL
  6. 【渝粤教育】国家开放大学2018年春季 0177-21T电机学(二) 参考试题
  7. group count聚集函数无法直接统计出分组后的总记录数
  8. spring boot html乱码,Spring-boot 字符集设置 解决乱码方案
  9. evt参数是干啥用的_塑料凳子上的洞,是干啥用的?
  10. 路飞学城-Python爬虫集训-第一章
  11. java AST 表达式_Atitti.java exp ast java表达式语法ast构造器
  12. 在Centos下启用mysql的远程访问账号
  13. c++之按距离某点的距离排序
  14. springboot传入json和文件_Spring Boot之 Controller 接收参数和返回数据总结(包括上传、下载文件)...
  15. Android RelativeLayout 相对布局
  16. sci协议集群服务器,唠嗑|新出了关于SCI的规定,可我连SCI分区都没搞明白
  17. 【图论】spfa算法详解
  18. 技术团队管理:需求之殇——你大妈不是你以前的大妈了,你大爷永远是你大爷
  19. Python小白的数学建模课-19.网络流优化问题
  20. 想配个电脑玩魔兽世界9.0,要什么配置,大概多少钱?

热门文章

  1. “蝉原则”与CSS3随机多背景随机圆角等效果
  2. C++一元和二元作用域
  3. 拓扑排序 Codeforces Round #748 (Div. 3)E. Gardener and Tree
  4. 微信小小屠龙攻略服务器,小小屠龙实用技巧攻略合集
  5. 骨传导耳机哪个牌子好,最受欢迎的五款骨传导蓝牙耳机
  6. 韩顺平SQL,雇员系统表.txt
  7. 网络内部搭建NTP服务器
  8. 阿里云天池Python训练营(第8天)
  9. 讨工资用什么方法是最有效的
  10. 【LaTex】宏包pageno的使用方法,命令\pageno的用法