目录
1.计算器方式实现
int my_strlen1(const char arr[])
{
int len1 = 0;
while (arr[len1])
{
len1++;
}
return len1;
}
void test1()
{
char arr[] = "abcdef";
int len = my_strlen1(arr);
printf("%d\n", len);
}
int main()
{
test1();//循环计算
test2();//指针相减
test3();//递归
return 0;
}
这里就是利用了一个整形变量才记录遍历数组时不为'\0'的个数,所以称为计算器法
2.指针相减法
int my_strlen2(const char *a)
{
assert(a);
const char* b= a;
while (*a != 0)
{
a++;
}
return a-b;
}
void test2()
{
char arr[] = "acbdef";
int len = my_strlen2(arr);
printf("%d\n", len);
}
int main()
{
test1();//循环计算
test2();//指针相减
test3();//递归
return 0;
}
这里是通过保存起始地址,然后等a指向'\0'时,两个指针相减
3.函数递归法
int my_strlen3(const char*a)
{
assert(a);
if (*a != 0)
{
return 1 + my_strlen3(a + 1);//这里利用了函数的递归,当满住*a != 0时,会继续调用函数,直到不满足条件
}
}
void test3()
{
char arr[] = "abcdef";
int len = my_strlen3(arr);
printf("%d\n", len);
}
int main()
{
test1();//循环计算
test2();//指针相减
test3();//递归
return 0;
}