C语言模拟实现strlen函数

模拟实现strlen函数

strlen函数

首先我们需要了解一下strlen函数,它是C语言的一个库函数,使用它需要引用**#include <string.h>**
在这里插入图片描述

1.strlen函数功能

该函数的功能为计算所给字符串的长度,即’\0’之前的字符个数。

2.strlen函数原型

size_t strlen(const char* str)

可以看到strlen函数的返回类型是size_t,即无符号整型,该函数的参数为const char* str,即一个字符指针,指向所计算字符串的首字符的地址。

3.strlen函数使用示例

#include <stdio.h>
int main()
{
	char arr[] = "abcdef";
	char* p = "abcdef";
	int ret = strlen(arr);
	int ret2 = strlen(p);
	printf("%d\n", ret);
	printf("%d\n", ret2);

	return 0;
}

在这里插入图片描述

模拟实现strlen函数

方法一:计数器法

//1.计数器
#include <stdio.h>
int my_strlen(char* arr)
{
	int count = 0;
	while (*arr)	//如果指针指向的不是0,则count++,且指针向后移动一步
	{

		count++;
		arr++;
	}
	return count;
}
int main()
{
	char* arr = "abcdef";
	int ret = my_strlen(arr);
	printf("%d\n", ret);
	return 0;
}
  • 这种方法的思路就是,遍历所给的字符串,如果没有遇到’\0’,则count++,如果遇到’\0’,则跳出循环,计数结束。

方法二:函数递归法

3.递归
#include <stdio.h>
int my_strlen(char* arr)
{
	if (*arr == 0)	//如果指针指向的字符为0,则返回0,此时,计数结束
	{
		return 0;
	}
	else	//如果指针指向的字符不为0,则arr++,并返回1 + my_strlen(arr)
	{
		arr++;
		return 1 + my_strlen(arr);
	}
}
int main()
{
	char* arr = "abcdef";
	int ret = my_strlen(arr);
	printf("%d\n", ret);
	return 0;
}

  • 思路:一个字符串的长度等于1加上除去第一个字符剩余的字符串的长度。

方法三:指针减指针

#include <stdio.h>
int my_strlen(char* arr)
{
	char* p = arr;	//利用指针p来记录字符串的初始位置
	while (*arr)	//如果指针指向字符不为0,则arr++,知道找到'\0'
	{
		arr++;
	}
	return arr - p;	//出了循环后,arr指向的是'\0',此时arr - p 即字符串的长度
}
int main()
{
	char* arr = "abcdef";
	int ret = my_strlen(arr);
	printf("%d", ret);

	return 0;
}
  • 思路:指针减去指针得到的是两个指针之间的元素个数。

感谢阅读,欢迎指正

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

贝壳cc

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值