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

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

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

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

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

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

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

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

2.2 strlen函数的原型strlen函数的原型代码语言:javascript代码运行次数:0运行复制//strlen函数的原型

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

可能有的读者,对这个str的变量类型有些困惑,这里我就为你解答一下:

首先,这是一个统计字符串的函数,仅仅只有统计字符串中字符的个数,不具备修改字符串内容的能力;

其次,既然我们不想修改自负床的内容,还要让这个变量接收到字符串的首地址,那么const char*这个类型就完美符合我们的要求。

希望读者们能够理解。❤️

3. strlen函数实操演练上面接了这么多的知识了,是时候该实践出真知了。

下面是strlen函数实际使用时的代码及其运行的结果:

实例

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

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

方法一:计数器法

先上代码,再讲思路

代码语言:javascript代码运行次数:0运行复制#include

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。

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

方法二:指针 - 指针

老规矩先上代码:

代码语言:javascript代码运行次数:0运行复制#include

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;

}方法二

这里的解释画幅图就明白了。

图解

方法三:递归

代码语言:javascript代码运行次数:0运行复制#include

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函数的使用,以及当我们遇到一个陌生的函数时,如何对函数进行分析的思路。

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

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

相关推荐

巴西为何遭德国横扫?

巴西为何遭德国横扫?

📅 08-29 👁️ 4188
梗学研究院:“666”是什么梗?
“我也是~”的英文怎么说?

“我也是~”的英文怎么说?

📅 08-10 👁️ 4241