1.计数法
#include <stdio.h>
unsigned int my_strlen(const char* str)
{
unsigned int count = 0;
while (*str)
{
count++;
str++;
}
return count;
}
int main()
{
char arr[] = "abcdef";
unsigned int n = my_strlen(arr);
printf("%d\n",n);
return 0;
}
2.指针-指针(计算'\0'到首地址之间的元素个数)
#include <stdio.h>
unsigned int my_strlen(const char* str)
{
char* p = str;
while (*str)
{
str++;
}
return str - p;
}
int main()
{
char arr[] = "abcdef";
unsigned int n = my_strlen(arr);
printf("%d\n",n);
return 0;
}
3.递归法
#include <stdio.h>
unsigned int my_strlen(const char* str)
{
if (*str)
{
return 1 + my_strlen(str + 1);
}
else
{
return 0;
}
}
int main()
{
char arr[] = "abcdef";
unsigned int n = my_strlen(arr);
printf("%d\n",n);
return 0;
}