#include<assert.h>
#include<stdlib.h>
#include<stdio.h>
//my_strlen()的三种实现方法
//计数器实现
int my_strlen1(const char* str)
{
int count = 0;
assert(str != NULL);
while(*str != '\0')
{
count++;
str++;
}
return count;
}
//指针直接实现
int my_strlen2(char* str)
{
char *p = str;
assert(str != NULL);
while(*p != '\0')
{
p++;
}
return (p-str);
}
//递归实现(不创建临时变量的计数器)
int my_strlen3(const char *str)
{
if(*str == '\0')
{
return 0;
}
else
{
return 1+my_strlen3(1+str);
}
}
int main()
{
char* str = "abcdf";
printf("%d\n",strlen("abcdf"));
printf("第一种实现方法:%d\n",my_strlen1(str));
printf("第二种实现方法:%d\n",my_strlen2(str));
printf("第三种实现方法:%d\n",my_strlen3(str));
return 0;
}
运行结果