一、什么是strlen函数
strlen是C语言的库函数,用来计算字符串长度,它的计算方式是,从给定的字符地址开始逐字符计算,直到遇到字符结束标志 \0 ,统计一共有多少个字符。
二、模拟实现方法
1、计数器
#include <stdio.h>
#include <assert.h>
size_t my_strlen(const char* str)
{
assert(str != NULL);
int count = 0;
while (*str)
{
count++;
str++;
}
return count;
}
int main()
{
char arr[] = "abcdef";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}
2、函数递归方法
#include <stdio.h>
#include <assert.h>
size_t my_strlen(const char* str)
{
assert(str != NULL);
if (*str)
{
return 1 + my_strlen(++str);
}
return 0;
}
int main()
{
char arr[] = "abcdef";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}
3、指针减去指针的方法
指针变量减去指针变量的到的结果表示的是两个指针之间有多少个元素
#include <stdio.h>
#include <assert.h>
size_t my_strlen(const char* str)
{
assert(str != NULL);
char* end = str;
while (*end)
{
end++;
}
return end - str;
}
int main()
{
char arr[] = "abcdef";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}
4、小提示
在函数形参加上 const 修饰是防止传过来的地址被改变,加上 assert 语句是防止访问到野指针。