实现strlen函数的三种方法:1.计数器法 2.递归法 3.指针减指针法
//————————————实现strlen函数的三种方法
strlen函数工作机理:函数从第一个字符开始计算字符串中字符数,直到遇到空字符,然后返回空字符前字符总个数。
1.计数器法
计数器法应该是最常见的strlen实现方法,其基本原理就是通过计数器计算循环的次数,从而实现计算字符串长度的作用
//#include<stdio.h>
//#include<assert.h>
//int my_strlen(const char *str)
//{
//?? ?assert(str);
//?? ?int count = 0;
//?? ?while (*str++ != 0)
//?? ?{
//?? ??? ?count++;
//?? ?}
//?? ?return count;
//}
//
//int main()
//{
//?? ?char arr[] = {"abc"};
//?? ?int ret = my_strlen(arr);
//?? ?printf("%d", ret);
//?? ?return 0;
//}为了防止字符串被改变,于是使用const来保护字符串,增加代码的健壮性 2.使用assert断言是为了防止传过来的是空指针
2.递归法
递归法的主要思想就是要判断第一字符是不是\0,如果不是就1 + 下一次函数实现,总的来说就是大事化小的思想。
//递归实现strlen
//#include<stdio.h>
//int my_strlen(char* str)
//{
// ? ?if ((*str) != '\0')
// ? ?{
// ? ? ? ?return 1 + my_strlen(str + 1);
// ? ?}
// ? ?else
// ? ? ? ?return 0;
//}
//int main()
//{
// ? ?char arr[] = { "abc" };
// ? ?printf("%d", my_strlen(arr));
// ? ?return 0;
//}
3.指针减指针法
首先需要明确,指针减去指针得到的是什么?是这两个元素之间的数据的个数。 要使用指针相减,就要找到字符串的初末指针,只可以通过寻找\0来实现
用指针减指针来实现strlen的功能
//#include<stdio.h>
//int my_strlen(char* str)//str接收首元素a的地址
//{
// ? ?char* start = str;//start里面装的是首元素a的地址
// ? ?while (*str != '\0')//解引用指针str,或者写成while(*str)---真(更好)
// ? ?{
// ? ? ? ?str++;//指针/地址++,str是个指针变量
// ? ?}
// ? ?return str - start;//指针减指针为两个指针之间元素的个数
//}
//int main()
//{
// ? ?int len = my_strlen("abc");
// ? ?printf("%d", len);
// ? ?return 0;
//}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!