C语言---------strlen的使用和模拟实现

字符串是以'\0'作为结束标志,strlen函数的返回值是'\0'前面的字符串的个数(不包括'\0')

注意

1,参数指向的字符串必须以'\0'结束

2,函数的返回值必须以size_t,是无符号的

使用代码

cpp 复制代码
​
#include<stdio.h>
#include<string.h>
int main()
{
	char arr[] = "abcdef";
	int a = strlen(arr);
	printf("%d", a);
	return 0;
}

​

结果运行

strlen模拟实现

方法1

cpp 复制代码
int my_strlen(const char * str)
{
 int count = 0;
 assert(str);
 while(*str)
 {
 count++;
 str++;
 }
 return count;
}
 

方法2

cpp 复制代码
int my_strlen(const char * str)
{
 assert(str);
 if(*str == '\0')
 return 0;
 else
 return 1+my_strlen(str+1);
}

方法3

cpp 复制代码
int my_strlen(char *s)
{
 assert(str);
 char *p = s;
 while(*p != '\0' )
 p++;
 return p-s;
}

整体代码

cpp 复制代码
#include<stdio.h>
#include<assert.h>
int my_strlen(char* arr)
{
	assert(arr);
	char* p = arr;
	while (*p!= '\0')
		p++;
	return p - arr;
}

int main()
{
	char arr[] = "abcdef";
	int a = my_strlen(arr);
	printf("%d", a);
	return 0;
}
相关推荐
oliveira-time21 分钟前
Java 1.8(也称为Java 8)
java·开发语言
可乐鸡翅好好吃2 小时前
not a genuine st device abort connection的问题
c语言·stm32·单片机·keil
钰爱&4 小时前
【Linux】POSIX 线程信号量与互斥锁▲
java·开发语言·jvm
yt948325 小时前
Matlab实现绘制任意自由曲线
开发语言·matlab
C++实习生6 小时前
powerbuilder9.0中文版
c语言·c++
oioihoii7 小时前
C++23 std::generator:用于范围的同步协程生成器 (P2502R2, P2787R0)
开发语言·c++·c++23
免檒7 小时前
go基于redis+jwt进行用户认证和权限控制
开发语言·redis·golang
没有梦想的咸鱼185-1037-16637 小时前
全球森林数据如何分析?基于R语言森林生态系统结构、功能与稳定性分析与可视化
开发语言·随机森林·数据分析·r语言
Your易元7 小时前
设计模式-迭代器模式
java·开发语言
2401_858286117 小时前
CD37.【C++ Dev】string类的模拟实现(上)
开发语言·c++·算法