1.计数法
size_t my_strlen(const char* str)
{
assert(str != NULL);//断言,防止str为空指针
int count = 0;
while (*str++)
{
count++;
}
return (int)count;
}
int main()
{
char arr[] = "abcdef";
int ret = my_strlen(arr);
printf("%d\n", ret);
return 0;
}
2.递归法
size_t my_strlen(const char* str)
{
if (*str == '\0')
return 0;
else
return my_strlen(str + 1) + 1;//如果不为0就加1记录个数
}
int main()
{
char arr[] = "abcdef";
int ret = my_strlen(arr);
printf("%d\n", ret);
return 0;
}
3.指针相减法
size_t my_strlen(const char* str)
{
assert(str);
const char* pc = str;
while (*pc)
{
pc++;
}
return pc - str;//指针相减得到这两个指针之间的元素个数
}
int main()
{
char arr[] = "abcdef";
int ret = my_strlen(arr);
printf("%d\n", ret);
return 0;
}