【C语言深度理解】strlen函数模拟实现的三种方法

strlen函数模拟实现的三种方法



前言

本文给大家介绍strlen函数以及strlen函数的三种实现的方法!


以下是本篇文章正文内容,下面案例可供参考`

一、strlen库函数的实现

为了更好地了解strlen函数的实现原理,我们参考一下MSDN里面的解释!


在这里插入图片描述


可以看到的是strlen函数是得到一个字符串的地址并且返回这个字符串的长度!
返回值是size_tconst char* string是字符串首字符的地址!
Each of these functons retums the number of characters in string, excluding the terminal NULL. No retum value is reserved to indicate an error.


代码如下(示例):

int main()
{
	char arr[] = "abcdefd";
	int ret = strlen(arr);
	printf("%d\n", ret);
	return 0;
}

二、strlen函数的模拟实现(三种方法)

1.最简单的方法

代码如下(示例):

//模拟实现strlen函数的第一种方法
size_t my_first_strlen(const char* string)
{
	assert(string);
	int count = 0;
	while (*string != '\0')
	{
		string++;
		count++;
	}
	return count;
}
int main()
{
	char arr[10] = "abcdef";
	int ret = my_first_strlen(arr);
	printf("%d\n", ret);
	return 0;
}

注意:为什么要用assert进行断言,strlen函数的返回值是No retum value is reserved to indicate an error,p如果接收过来的是空指针,那么这里运行会崩溃!!!


2.递归的方法

代码如下(示例):

size_t my_second_strlen(const char* str)
{
	assert(str != NULL);
	if (*str != '\0')
	{
		return 1 + my_second_strlen(str + 1);
	}
	else
	{
		return 0;
	}
}
int main()
{
	char arr[10] = "abcdef";
	int ret = my_second_strlen(arr);
	printf("%d\n", ret);
	return 0;
}

在这里插入图片描述这张图是对递归方法的解释!!!最后返回的也是size_t为6


3.指针-指针的方法

注意:指针减指针减去的是元素的个数!!!

代码如下(示例):

size_t my_third_strlen(const char* str)
{
	assert(str != NULL);
	const char* start = str;
	while (*str != '\0')
	{
		str++;
	}
	return str - start;
}
 int main()
{
	char arr[10] = "abcdef";
	int ret = my_third_strlen(arr);
	printf("%d\n", ret);
	return 0;
}

在这里插入图片描述


总结

以上就是今天要讲的内容,本文介绍了strlen库函数的使用和strlen函数的三次模拟实现过程,如果我的作品对你有帮助记得三连,我会顺着网线互关you!
在这里插入图片描述

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值