C语言|strlen()函数--使用及模拟实现
目录
【C语言|strlen()函数--使用及模拟实现】1、使用介绍
2、模拟实现
(1)方法一:计数器
(2)方法二: 指针相减
(3)方法三:递归
★★★★★ 互相学习,共同进步!
1、使用介绍 strlen()函数的功能是用来求取字符串长度的,我们只需给它传递一个字符串的首地址参数,或者是使用者自己想要开始计数的位置即可。需要注意的是,strlen()只有遇到'\0'才会停止,因此被求取字符串必须以'\0'结尾。
正确使用代码如下:
#include
#includeint main()
{
char arr[] = "abcdefgh";
int ret = strlen(arr);
printf("%d\n", ret);
return 0;
}
代码运行结果: 8错误使用代码如下:
#include
#includeint main()
{
char arr[] = {'a','b','c','d','e','f'};
int ret = strlen(arr);
printf("%d\n", ret);
return 0;
}
代码运行结果: 19(我自己运行的结果,不唯一也不确sh上面这个代码,使用者本意是要求 "abcdef" 的长度,但写成了字符数组的形式,且结尾处没有'\0',所以strlen()函数求字符串长度时遇到 ' f ' 不会停止,而后面内存中的内容是未知的。所以求取的结果也是未知的,唯一可以确定的是strlen()函数停下来的未知内存中是'\0'。
2、模拟实现 (1)方法一:计数器 代码实现如下:
#includeint my_strlen(char* p)
{
int count = 0;
while (*(p + count))
{
count++;
}
return count;
}int main()
{
char arr[] = "abcdef";
int ret = my_strlen(arr);
printf("%d\n", ret);
return 0;
}
(2)方法二: 指针相减 代码实现如下:
#includeint my_strlen(char* p)
{
char* tmp = p;
while (*p)
{
p++;
}
return p - tmp;
}int main()
{
char arr[] = "abcdef";
int ret = my_strlen(arr);
printf("%d\n", ret);
return 0;
}
(3)方法三:递归 代码实现如下:
#includeint my_strlen(char* p)
{
if (*p == '\0')
{
return 0;
}
return 1 + my_strlen(p+1);
}int main()
{
char arr[] = "abcdef";
int ret = my_strlen(arr);
printf("%d\n", ret);
return 0;
}
★★★★★ 感谢阅读,希望能够帮助到你!!!
推荐阅读
- C语言|字符函数、字符串函数、内存函数
- C语言|指针-习题集
- c语言|立下一个flag(学好编程)
- C语言小游戏|EasyX进阶版——鼠标交互
- C语言探索之旅|【C语言探索之旅】 第三部分第一课(SDL开发游戏之安装SDL)
- 【比赛】蓝桥杯嵌入式G4|蓝桥杯嵌入式【G4】教程汇总
- 单片机|想从事单片机工作,C语言要达到什么水平()
- 单片机|我是怎么提高单片机编程能力的()
- c语言|C语言开发单片机如何避免全局变量过多混乱