指针-指针
int my_strlen1(char* arr)
{
char* left = arr;
while (*left != '\0')
{
left++;
}//利用指针-指针=两者之间的元素个数
//此时left指向了'\0'
return (left - arr);
}
int main()
{
char arr[] = "abcdef";
int ret = my_strlen1(arr);
printf("%d", ret);
return 0;
}
计数器实现strlen
int my_strlen2(char* arr)
{
int count = 0;
while (*arr++)
{
count++;
}
return count;
}
主函数与上述一致,不过这个函数有一个缺点就是,当出循环之后,arr指针指向了数组界限后的一个地址,越界了,只是并没有解引用,所以这个错误不影响。
递归实现strlen函数
int my_strlen3(char* arr)
{
if (*arr)
{
return 1 + my_strlen3(arr + 1);
}
else
return 0;
}
int main()
{
char arr[] = "abcdef";
int ret = my_strlen3(arr);
printf("%d", ret);
return 0;
}
以上就是三种方式模拟实现strlen函数,对于初学者来说非常友好,简单易懂,好啦,希望对各位有所帮助.