strlen 的三种模拟方法

欢迎来到 Claffic 的博客 💞💞💞

前言:

在C/C++ 中,strlen函数是一种计算字符串长度的库函数,要模拟此函数有多种方法,这里总结三种模拟方法。


1. strlen 函数介绍

   cplusplus - strlen

strlen 函数的功能是计算字符串长度;

返回 size_t 类型(unsigned int 无符号整型)的数值;

使用此函数,只需传一个数组名。

一个字符串的末尾默认放有 '\0' ,通过统计 '\0' 之前出现的字符个数即可求得字符串长度,接下来的模拟都是按照这一思路

2.实现结果

2.1直观暴力型

循环 + 计数器即可

size_t my_strlen1(const char* str)
{
	assert(str != NULL);
    //断言,保证传入的字符不为空

	size_t len = 0; //普通的计数
	while (*str != '\0')  //普通的循环
	{
		len++;
		str++;
	}
	return len;
}

2.2指针 - 指针型

这种类型的思路 就是事先保存字符串起始位置的地址,后利用指针单独自加,最后两指针做差得出中间所夹字符个数。

size_t my_strlen2(const char* str)
{
	assert(str != NULL);
	char* start = str;
	while (*str)  //用单个字符本身做判断条件,当 '\0' 时不再进入循环
	{
		str++;
	}
	return str - start;
}

2.3递归型

strlen 也可以用递归实现啦 ~

思路就是 依然以不遇到 '\0' 为判断条件,满足条件就返回该字符(1)

继续用该函数从下一个字符开始统计

size_t my_strlen3(const char* str)
{
	assert(str != NULL);
	if (*str != '\0')
		return  1 + my_strlen3(str + 1);
	else
		return 0;
}

评价:

直观暴力型:最容易想到,中规中矩;

指针 - 指针型:代码小巧简洁;

递归型:累电脑,不容易想到,但可装x 。

你喜欢哪种呢?

如果你觉得这篇文章还不错并且对你有帮助,不妨支持一波哦  💗💗💗

关注我  不迷路!!!

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Claffic

赏包辣条~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值