第一种:计数器方法,一开始写的时候,我是最喜欢用这种方法写的,但随着后来的知识面的扩充,感觉这种方法不是很简便。
#include <assert.h>
int my_strlen(const char *str)
{
int count = 0;
assert(str != NULL);
while (*str != '\0')
{
count++;
str++;
}
return count;
}
int main()
{
int ret = 0;
char arr[] = "abcdef";
ret = my_strlen(arr);
printf("%d\n", ret);
system("pause");
return 0;
}
第二种:不能创建临时变量计数器,使用递归方式。
int my_strlen(const char *src)
{
//a bcdef
if (*src == '\0')
return 0;
else
return 1 + my_strlen(src + 1);//src + 1相当于src++
}
int main()
{
char *p = "abcdef";
my_strlen(p);
system("pause");
return 0;
}
第三种:使用指针-指针的方法,指针-指针得到的是元素个数
int my_strlen(const char* str)
{
char *p = str;
assert(str != NULL);
while (*p != '\0')
{
p++;
}
return p - str;
}
int main()
{
int ret = 0;
char arr[] = "1234abcdef";
ret = my_strlen(arr);
printf("%d\n", ret);
system("pause");
return 0;
}