概要
通过指针的运用和递归函数通过三种办法模拟实现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的印象