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; }

★★★★★ 感谢阅读,希望能够帮助到你!!!

    推荐阅读