1.
#include<stdio.h> #include<string.h> #include<assert.h> int my_strlen(const char* arr) { char* start = arr; char* end = arr; assert(start && end); while (*end != 0) { end++; } return end - start; } int main() { char arr[] = "abcdef"; printf("%d\n", strlen(arr)); printf("%d\n", my_strlen(arr)); return 0; }
ret - arr 两个地址相减 求的是之间元素个数。
例如:
2.计数法
int my_strlen(const char* arr)
{
int count = 0;
assert(arr != NULL);
while (*arr != 0)
{
arr++;
count++;
}
return count;
}3.递归
int my_strlen(const char* arr)
{
assert(arr != NULL);
if (*arr == 0)
return 0;
else
return 1 + my_strlen(++arr);
}
strlen 的三种模拟实现
于 2022-03-20 10:16:47 首次发布