strlen函数的用法及模拟实现strlen函数的两种方法

  • 一、strlen函数的用法
    • strlen的简单应用
    • 二、指针模拟实现strlen函数
    • 三、递归模拟实现strlen函数

一、strlen函数的用法

1.strlen函数的函数原型:size_t strlen(const char*str)
该函数包含在string.h的头文件中。
2.该函数用于求参数str指向字符串的长度。
3.注意:
(1)字符串中’\0’作为结束标志,strlen函数返回的是在字符串中’\0’前面的字符个数(不包含’\0’)。
(2)注意函数的返回值为size_t,是一个无符号的类型(做题目时要注意)。

strlen的简单应用

代码显示:

#include <stdio.h>
#include <string.h>int main()
{char arr[] = "hello";int len = strlen(arr);printf("%d\n", len);return 0;
}

显示结果:

这里注意,当字符串的下一位不是’\0’时,无法用strlen函数求长度,求出的为随机值
代码显示:

int main()
{char arr[] = { 'h', 'e', 'l', 'l', 'o' };int len = strlen(arr);printf("%d\n", len);return 0;
}

显示结果:

此时这里的19是随机值,即strlen函数在数组空间里不断向后找’\0’,直到找到’\0’时的长度,而不是我们想要求得字符串长度了

二、指针模拟实现strlen函数

代码显示:

int my_strlen(const char* str)
{int count = 0;//count用来记录字符串的字符个数while(*str != '\0')//即从首元素地址开始一个个往后找'\0',并记录找到的字符个数{count++;str++;}return count;
}
int main()
{char arr[] = "hello";int len =my_strlen(arr);//arr是数组,数组传参,传过去的是数组的首元素地址printf("%d\n", len);return 0;
}

显示结果:

三、递归模拟实现strlen函数

代码显示:

int my_strlen(const char* str)                        //递归是通过把大事化小
{                                                    //my_strlen("hello");if (*str != '\0')                                //1+my_strlen("ello");{                                                //1+1+my_strlen("llo");return 1 + my_strlen(str + 1);}elsereturn 0;}
int main()
{char arr[] = "hello";int len =my_strlen(arr);//arr是数组,数组传参,传过去的是数组的首元素地址printf("%d\n", len);return 0;
}

显示结果:

strlen函数的用法及模拟实现strlen函数的两种方法相关推荐

  1. C语言 strstr函数的用法及模拟实现strstr函数

    C语言 strstr函数的用法及模拟实现strstr函数 一.strstr函数的用法 二.模拟实现strstr函数的功能 一.strstr函数的用法 1.strstr函数原型:char* strstr ...

  2. 模拟键盘鼠标事件有两种方法

    实现一个鼠标或者键盘模拟器,可以完成很多功能,比如做一个简单的游戏外挂^_^.通常,模拟键盘鼠标事件有两种方法: 1.keybd_event, mouse_event 2.SendMessage, P ...

  3. matlab fopen函数的用法,matlab中关于fread函数的用法

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:matlab中关于fread函数的用法 问题详情:用fread打开一个时,需要不需要把开放在某个特回答:必须在Matlab可以搜索的 ...

  4. 【数字图像处理】模拟Matlab的imresize()写一个你自己的imresize()函数,至少应实现‘nearest’和‘bilinear’两种方法

    作业要求:模拟Matlab的imresize()写一个你自己的imresize()函数,至少应实现'nearest'和'bilinear'两种方法. 首先理论方面主要参考了一下两个网址 https:/ ...

  5. sqrt函数模拟实现的两种方法

    起因:在leetcode刷题时,有一道题目考察了有关sqrt的原理的题目,当时就去查了网上的文章,结果发现,一开始的时候看的很懵,最后也是搞定了两种方法,今天我就以最简单的方式写下这两种方式的思路讲解 ...

  6. c语言中fact函数怎么调用,C语言程序题: 1、编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现...

    点击查看C语言程序题: 1.编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现具体信息 答:int fac(int n) //非递归{int f=1; for(;n;) ...

  7. C++对类中字符串成员进行初始化的两种方法以及友元函数的使用

    在C++之中,如果要建立一个类,且类中需要有字符串数据成员,我们可以把该成员声明成两种类型. 第一种方法:使用头文件string,把字符串数据成员声明为string类的对象,用这种方法对字符串操作十分 ...

  8. SQL语句行列转换两种方法 case ...when 和pivot函数应用

    2019独角兽企业重金招聘Python工程师标准>>> SQL语句行列转换两种方法 case ...when 和pivot函数应用SQL语句行列转换两种方法 case ...when ...

  9. NLP:两种方法(自定义函数和封装函数)实现提取两人对话内容(***分隔txt文档),并各自保存为txt文档

    NLP:两种方法(自定义函数和封装函数)实现提取两人对话内容(***分隔txt文档),并各自保存为txt文档 目录 问题探究 实现代码 问题探究 实现代码 f=open("niu.txt&q ...

最新文章

  1. Enterprise Library 2.0 Hands On Lab 翻译(12):安全应用程序块(一)
  2. 杭电1024 Max Sum Plus Plus状压dp(java)
  3. iOS开发——图片转PDF的实现方法
  4. 制作可以自动隐藏的弹出式菜单
  5. MKL学习——基本操作C++实现
  6. 逃离深圳的华为,原来可以这么美:研发小姐姐第一天上班游记
  7. 强悍的命令 —— cp
  8. rost反剽窃检测系统_动静结合,最硬核反外挂
  9. 病毒及攻击防御手册之六
  10. 三、Multisim放置门电路
  11. 嗅探(窃听网络上流经的数据包)
  12. CTGU实验6_2-创建借书存储过程
  13. Antelope与 Barracude MYSQL 文件格式
  14. 利用Python打造一个语音合成系统,听说你想要御姐音?
  15. iptables场景一(上)
  16. 360°环视性能倍增,瑞芯微首发全景环视芯片方案
  17. Java实现MD5加密解密
  18. CSS魔法堂:重新认识Box Model、IFC、BFC和Collapsing margins
  19. LPA-Star算法
  20. 九月比赛流水-零基础入门应用赛

热门文章

  1. Neo4j 系列(1) —— 初识 Neo4j
  2. 如何在window10系统上简单快捷下载b站视频
  3. 33种经典图表类型总结,轻松玩转数据可视化
  4. iOS字体号数与像素对应关系
  5. 广告深度学习计算:阿里妈妈智能创意服务优化
  6. win11下载配置CIC Flowmeter环境并提取流量特征
  7. 关于wayos授权验证及wayos破解的一些想法
  8. CAD命令集 CAD命令笔记本
  9. ipa文件的安装方法
  10. 解决echarts设置x轴、y轴刻度起始值、终止值以及步长