#include <stdio.h>
#include <assert.h>
//方法一:使用指针
int my_strlen(const char *str)
{
assert(str);
int count = 0;
while (*str++)
{
count++;
}
return count;
}
int main()
{
char *str = "abcdef";
int len = my_strlen(str);
printf("%d\n", len);
system("pause");
return 0;
}
//方法二:递归实现
int my_strlen(const char *str)
{
if (*str =='\0' )
{
return 0;
}
else
{
return 1 + my_strlen(str+1); //str+1
}
}
int main()
{
char *str = "abcdef";
//strlen(str) == 1+strlen(str+1)==1+1+strlen(str+1+1)
int len = my_strlen(str);
printf("%d\n", len);
system("pause");
return 0;
}
//方法三: 指针 - 指针
int my_strlen(char *str)
{
char *p=str;
while(*p)
{
p++;
}
return p-str; //指针 - 指针 结果其实是元素的个数,而不是字节数
}
本文出自 “Vs吕小布” 博客,谢绝转载!