
目录
1、使用介绍
2、模拟实现
(1)方法一:计数器
(2)方法二: 指针相减
(3)方法三:递归
★★★★★ 互相学习,共同进步!
1、使用介绍strlen()函数的功能是用来求取字符串长度的,我们只需给它传递一个字符串的首地址参数,或者是使用者自己想要开始计数的位置即可。需要注意的是,strlen()只有遇到''才会停止,因此被求取字符串必须以''结尾。
正确使用代码如下:
#include#include int main() { char arr[] = "abcdefgh"; int ret = strlen(arr); printf("%dn", ret); return 0; }
代码运行结果: 8
错误使用代码如下:
#include#include int main() { char arr[] = {'a','b','c','d','e','f'}; int ret = strlen(arr); printf("%dn", ret); return 0; }
代码运行结果: 19 (我自己运行的结果,不唯一也不确sh
上面这个代码,使用者本意是要求 "abcdef" 的长度,但写成了字符数组的形式,且结尾处没有'',所以strlen()函数求字符串长度时遇到 ' f ' 不会停止,而后面内存中的内容是未知的。所以求取的结果也是未知的,唯一可以确定的是strlen()函数停下来的未知内存中是''。
2、模拟实现 (1)方法一:计数器代码实现如下:
#include(2)方法二: 指针相减int my_strlen(char* p) { int count = 0; while (*(p + count)) { count++; } return count; } int main() { char arr[] = "abcdef"; int ret = my_strlen(arr); printf("%dn", ret); return 0; }
代码实现如下:
#include(3)方法三:递归int my_strlen(char* p) { char* tmp = p; while (*p) { p++; } return p - tmp; } int main() { char arr[] = "abcdef"; int ret = my_strlen(arr); printf("%dn", ret); return 0; }
代码实现如下:
#includeint my_strlen(char* p) { if (*p == '') { return 0; } return 1 + my_strlen(p+1); } int main() { char arr[] = "abcdef"; int ret = my_strlen(arr); printf("%dn", ret); return 0; }
★★★★★ 感谢阅读,希望能够帮助到你!!!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)