文章目录
- 1.前言
- 2. 介绍strlen函数
- 2.1 strlen函数的作用
- 2.2 strlen函数的原型
- 3. strlen函数实操演练
- 4. strlen函数的模拟实现
- 5. 总结
1.前言
在现实生活场景中,字符乃至字符串出现的形式占大多数。比如,整天数着自己小金库里钱的数目本质上也是一种符号(数学符号),在5月20号那天说出的“5201314”也是以一种符号,等等。
那回到编程的视角中,程序员编程就是为了能够解决生活中的出现问题。如果字符和字符串出现的如此频繁,那么程序员难免要操作和处理一些字符和字符串。(在本文中,我只介绍字符串函数的一小部分)
不过不用担心,C语言在string.h这个头文件中为我们能实现了很多操作和处理字符串的函数,而在本文中,就讲解其中较为常用的一个——strlen函数
让我们开启学习之路,通往那编程辉煌的殿堂吧!🥇🥇🥇
2. 介绍strlen函数
2.1 strlen函数的作用
在前言我讲过,这是一个操作和处理字符串的函数,那么它能够生效的对象就只有字符串了,别的数据类型都不可以。(这个点是很多初学者容易犯过错误的点)。
strlen函数的功能:统计字符串中字符的个数,但不包括‘\0’。(注意:‘\0’是不算在统计个数中的,这个点也是很多人都会忽略的)
2.2 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函数的使用,以及当我们遇到一个陌生的函数时,如何对函数进行分析的思路。
如果你还有什么不了解的地方,欢迎在评论区提问,我会回复的!
最后,送给大家一句话。学习很难,但坚持一定很酷!