strlen函数及其模拟实现(C语言)

1.前言

在现实生活场景中,字符乃至字符串出现的形式占大多数。比如,整天数着自己小金库里钱的数目本质上也是一种符号(数学符号),在5月20号那天说出的“5201314”也是以一种符号,等等。

那回到编程的视角中,程序员编程就是为了能够解决生活中的出现问题。如果字符和字符串出现的如此频繁,那么程序员难免要操作和处理一些字符和字符串。(在本文中,我只介绍字符串函数的一小部分)

不过不用担心,C语言在string.h这个头文件中为我们能实现了很多操作和处理字符串的函数,而在本文中,就讲解其中较为常用的一个——strlen函数

让我们开启学习之路,通往那编程辉煌的殿堂吧!🥇🥇🥇

2. 介绍strlen函数

2.1 strlen函数的作用

在前言我讲过,这是一个操作和处理字符串的函数,那么它能够生效的对象就只有字符串了,别的数据类型都不可以。(这个点是很多初学者容易犯过错误的点)。

strlen函数的功能:统计字符串中字符的个数,但不包括‘\0’。(注意:‘\0’是不算在统计个数中的,这个点也是很多人都会忽略的)

2.2 strlen函数的原型

strlen函数的原型

//strlen函数的原型
size_t strlen(const char* str)

从这个原型中,我们可以看出一些端倪。strlen函数的返回值是一个正整数,还有它的形参str是个const char*类型的变量。

可能有的读者,对这个str的变量类型有些困惑,这里我就为你解答一下:
首先,这是一个统计字符串的函数,仅仅只有统计字符串中字符的个数,不具备修改字符串内容的能力;
其次,既然我们不想修改自负床的内容,还要让这个变量接收到字符串的首地址,那么const char*这个类型就完美符合我们的要求。
希望读者们能够理解。❤️

3. strlen函数实操演练

上面接了这么多的知识了,是时候该实践出真知了。

下面是strlen函数实际使用时的代码及其运行的结果:
实例
相信大家看完这个案例后,内心就不会觉得strlen函数有多难用了。其实用这个函数时,需要注意的是包含一下string.h这个头文件即可。其他的就没什么难点了!

4. strlen函数的模拟实现

对于strlen函数的模拟实现,我将会介绍三种方法,希望读者们能够消化。👍

方法一:计数器法
先上代码,再讲思路

#include<stdio.h>
int my_strlen(char *str)
{
	int conut = 0;
	while(*str++ != '\0')
	{
		count++;
	}
	return count;
}
int main()
{
	char arr[] = "I love learning C!";
	int ret = my_strlen(arr);
	printf("%d\n",ret);
	return 0;
}

模拟实现
这里主要是分析作者写的my_strlen函数:

首先根据需求,我们要得到字符串中字符的个数,那返回值必定是一个整型。另外我们是要对字符串进行操作的,为此传给函数的字符数组,我们得设置一个字符指针来接收。为此,就有下面的代码产生
int my_strlen(char* str)
之后,就得分析函数体里面的内容了。我们都知道,字符串是以’\0’结尾的,根据这个特点我们就可以用一个while循环,循环到str指针指向’\0’之后退出循环,并且每进入一次循环体,就证明了指针指向了一个有效的数据,那么count就自增1。

如果你理解我说的话,那就太好了!接下来,讲解第二种做法。

方法二:指针 - 指针
老规矩先上代码:

#include<stdio.h>
int my_strlen(char *str)
{
	char* start = str;
	while(*str)
	{
		str++;
	}
	return str - start;
}
int main()
{
	char arr[] = "I love learning C!";
	int ret = my_strlen(arr);
	printf("%d\n",ret);
	return 0;
}

方法二
这里的解释画幅图就明白了。
图解
方法三:递归

#include<stdio.h>
int my_strlen(char *str)
{
	if(*str == '\0')
	{
		return 0;
	}
	return 1 + my_strlen(str + 1);
}
int main()
{
	char arr[] = "I love learning C!";
	int ret = my_strlen(arr);
	printf("%d\n",ret);
	return 0;
}

方法三
这个方式也是画个图你就理解了,
图解
就是把未拆分出来的字符作为一个整体,拆出来的字符就+1。

5. 总结

本文,主要的目的是要读者能够熟悉strlen函数的使用,以及当我们遇到一个陌生的函数时,如何对函数进行分析的思路。

如果你还有什么不了解的地方,欢迎在评论区提问,我会回复的!

最后,送给大家一句话。学习很难,但坚持一定很酷!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值