欢迎来到 Claffic 的博客 💞💞💞
前言:
在C/C++ 中,strlen函数是一种计算字符串长度的库函数,要模拟此函数有多种方法,这里总结三种模拟方法。
1. strlen 函数介绍
cplusplus - strlen
strlen 函数的功能是计算字符串长度;
返回 size_t 类型(unsigned int 无符号整型)的数值;
使用此函数,只需传一个数组名。
一个字符串的末尾默认放有 '\0' ,通过统计 '\0' 之前出现的字符个数即可求得字符串长度,接下来的模拟都是按照这一思路:
2.实现结果
2.1直观暴力型
循环 + 计数器即可
size_t my_strlen1(const char* str)
{
assert(str != NULL);
//断言,保证传入的字符不为空
size_t len = 0; //普通的计数
while (*str != '\0') //普通的循环
{
len++;
str++;
}
return len;
}
2.2指针 - 指针型
这种类型的思路 就是事先保存字符串起始位置的地址,后利用指针单独自加,最后两指针做差得出中间所夹字符个数。
size_t my_strlen2(const char* str)
{
assert(str != NULL);
char* start = str;
while (*str) //用单个字符本身做判断条件,当 '\0' 时不再进入循环
{
str++;
}
return str - start;
}
2.3递归型
strlen 也可以用递归实现啦 ~
思路就是 依然以不遇到 '\0' 为判断条件,满足条件就返回该字符(1)
并继续用该函数从下一个字符开始统计
size_t my_strlen3(const char* str)
{
assert(str != NULL);
if (*str != '\0')
return 1 + my_strlen3(str + 1);
else
return 0;
}
评价:
直观暴力型:最容易想到,中规中矩;
指针 - 指针型:代码小巧简洁;
递归型:累电脑,不容易想到,但可装x 。
你喜欢哪种呢?
如果你觉得这篇文章还不错并且对你有帮助,不妨支持一波哦 💗💗💗
关注我 不迷路!!!