文章目录
- 概要
- 整体架构流程
- 代码实现
- 小结
概要
通过指针的运用和递归函数通过三种办法模拟实现strlen的功能
整体架构流程
- 第一种:(计数器版)通过指针的计算字符串的长度,通过while循环条件是指针不等于\0,来实现指针移动并创建一个count来计数;
- 第二种:(指针相减版)因为指针减指针会得到两个指针相差的元素个数,所以我们用一个指针指向第一个字符的位置,另一个指针进行移动计数最后两个指针相减;
- 第三种:(递归实现)采用大事化小思想算整个字符串的长度相当于求1+剩下字符串的长度,然后套用上面的方法知道指针指向\0;
代码实现
第一版:
#include<stdio.h>int my_strlen(const char*dest)
{int count;while(*dest != '\0'){count++;dest++;}return count;
}int main()
{char arr1[]="abcdef";int ret = my_strlen(arr1);printf("%d",ret);return 0;
}
第二版:
#include <stdio.h>
int my_strlen(char* dest)
{char* dest1= dest;while(*dest != '\0'){dest++;}return dest - dest1;
}int main()
{char arr[] ="abcdef";int ret = my_strlen(arr);printf("%d",ret);return 0;
}
第三版:
#include<stdio.h>int my_strlen(char* dest)
{if(*dest == '\0'){return 0;}else{return 1 + my_strlen(dest + 1);}
}int main()
{char arr[] = "abcdef";int ret = my_strlen(arr);printf("%d",ret);return 0;
}
小结
`以上strlen的模拟实现可以加深我们对strlen的印象