strlen函数的用法及模拟实现strlen函数的两种方法
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函数的两种方法相关推荐
- C语言 strstr函数的用法及模拟实现strstr函数
C语言 strstr函数的用法及模拟实现strstr函数 一.strstr函数的用法 二.模拟实现strstr函数的功能 一.strstr函数的用法 1.strstr函数原型:char* strstr ...
- 模拟键盘鼠标事件有两种方法
实现一个鼠标或者键盘模拟器,可以完成很多功能,比如做一个简单的游戏外挂^_^.通常,模拟键盘鼠标事件有两种方法: 1.keybd_event, mouse_event 2.SendMessage, P ...
- matlab fopen函数的用法,matlab中关于fread函数的用法
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:matlab中关于fread函数的用法 问题详情:用fread打开一个时,需要不需要把开放在某个特回答:必须在Matlab可以搜索的 ...
- 【数字图像处理】模拟Matlab的imresize()写一个你自己的imresize()函数,至少应实现‘nearest’和‘bilinear’两种方法
作业要求:模拟Matlab的imresize()写一个你自己的imresize()函数,至少应实现'nearest'和'bilinear'两种方法. 首先理论方面主要参考了一下两个网址 https:/ ...
- sqrt函数模拟实现的两种方法
起因:在leetcode刷题时,有一道题目考察了有关sqrt的原理的题目,当时就去查了网上的文章,结果发现,一开始的时候看的很懵,最后也是搞定了两种方法,今天我就以最简单的方式写下这两种方式的思路讲解 ...
- c语言中fact函数怎么调用,C语言程序题: 1、编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现...
点击查看C语言程序题: 1.编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现具体信息 答:int fac(int n) //非递归{int f=1; for(;n;) ...
- C++对类中字符串成员进行初始化的两种方法以及友元函数的使用
在C++之中,如果要建立一个类,且类中需要有字符串数据成员,我们可以把该成员声明成两种类型. 第一种方法:使用头文件string,把字符串数据成员声明为string类的对象,用这种方法对字符串操作十分 ...
- SQL语句行列转换两种方法 case ...when 和pivot函数应用
2019独角兽企业重金招聘Python工程师标准>>> SQL语句行列转换两种方法 case ...when 和pivot函数应用SQL语句行列转换两种方法 case ...when ...
- NLP:两种方法(自定义函数和封装函数)实现提取两人对话内容(***分隔txt文档),并各自保存为txt文档
NLP:两种方法(自定义函数和封装函数)实现提取两人对话内容(***分隔txt文档),并各自保存为txt文档 目录 问题探究 实现代码 问题探究 实现代码 f=open("niu.txt&q ...
最新文章
- Enterprise Library 2.0 Hands On Lab 翻译(12):安全应用程序块(一)
- 杭电1024 Max Sum Plus Plus状压dp(java)
- iOS开发——图片转PDF的实现方法
- 制作可以自动隐藏的弹出式菜单
- MKL学习——基本操作C++实现
- 逃离深圳的华为,原来可以这么美:研发小姐姐第一天上班游记
- 强悍的命令 —— cp
- rost反剽窃检测系统_动静结合,最硬核反外挂
- 病毒及攻击防御手册之六
- 三、Multisim放置门电路
- 嗅探(窃听网络上流经的数据包)
- CTGU实验6_2-创建借书存储过程
- Antelope与 Barracude MYSQL 文件格式
- 利用Python打造一个语音合成系统,听说你想要御姐音?
- iptables场景一(上)
- 360°环视性能倍增,瑞芯微首发全景环视芯片方案
- Java实现MD5加密解密
- CSS魔法堂:重新认识Box Model、IFC、BFC和Collapsing margins
- LPA-Star算法
- 九月比赛流水-零基础入门应用赛