知识点——【学习补档】模拟实现库函数strlen

问题描述

strlen()的功能是计算字符串的长度,以\0作为字符串结束的标志。

问题分析

要模拟实现计算字符串的长度,可以从以下角度入手:
1.地址,字符串内的字符在内存里为顺序存储,每个字符占一位,我们可以通过使用尾字符的地址减去首字符的地址来实现计算字符串长度;
2.递归,我们面向过程,我们计算字符串长度可以视为一个数数的动作重复进行,直到数到\0为止,我们可以通过一个递归模拟数数的这个动作;
3.计数器,我们面向对象,原理同2,不过使用了一个循环来实现。

代码

//模拟实现strlen

//#include<stdio.h>
//int main()
//{
	//模拟实现strlen有三种方法
	//1.地址-地址型
	//2.递归型
	//3.计数器型

	//1.地址-地址型
	//通过首字符的地址减去最后一个字符的地址来计算字符串长度
	//const char* str =  "abcdef";
	//const char*  p1 = 0;
	//const char*  p2 = 0;
	//p1 = str;
	//while (*(str++) != '\0')
	//{}
	//str--;
	//p2 = str;
	//printf("%d",p2-p1);
//	return 0;
//}
//2.递归型
//递归型是通过一个递归,逐个的将字符计算
//#include<stdio.h>
//#include<assert.h>
// 
//int my_strlen(const char* str)
//{
//	assert(str);
//	if ((*str) != '\0')
//		return my_strlen(++str) + 1;
//	else
//		return 0;
//}
//int main()
//{
//	const char* str =  "abcdef";
//	int ret =my_strlen(str);
//	printf("%d",ret);
//
//	return 0;
//}
3.计数器型
计数器型是逐个数字符串中的字符个数,直到遇到\0
//#include<stdio.h>
//#include<assert.h>
//int my_strlen(const char* str)
//{
//	assert(str);
//	int i = 0;
//	while (*(str++) != '\0')
//	{
//		i++;
//	}
//	return i;
//}
//int main()
//{
//	const char* str =  "abcdef";
//	int ret = my_strlen(str);
//	printf("%d",ret);
//
//	return 0;
//}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值