strlen函数模拟实现的三种方法
前言
本文给大家介绍strlen函数以及strlen函数的三种实现的方法!
以下是本篇文章正文内容,下面案例可供参考`
一、strlen库函数的实现
为了更好地了解strlen函数的实现原理,我们参考一下MSDN里面的解释!
可以看到的是strlen函数是得到一个字符串的地址并且返回这个字符串的长度!
返回值是size_t,const char* string是字符串首字符的地址!
Each of these functons retums the number of characters in string, excluding the terminal NULL. No retum value is reserved to indicate an error.
代码如下(示例):
int main()
{
char arr[] = "abcdefd";
int ret = strlen(arr);
printf("%d\n", ret);
return 0;
}
二、strlen函数的模拟实现(三种方法)
1.最简单的方法
代码如下(示例):
//模拟实现strlen函数的第一种方法
size_t my_first_strlen(const char* string)
{
assert(string);
int count = 0;
while (*string != '\0')
{
string++;
count++;
}
return count;
}
int main()
{
char arr[10] = "abcdef";
int ret = my_first_strlen(arr);
printf("%d\n", ret);
return 0;
}
注意:为什么要用assert进行断言,strlen函数的返回值是No retum value is reserved to indicate an error,p如果接收过来的是空指针,那么这里运行会崩溃!!!
2.递归的方法
代码如下(示例):
size_t my_second_strlen(const char* str)
{
assert(str != NULL);
if (*str != '\0')
{
return 1 + my_second_strlen(str + 1);
}
else
{
return 0;
}
}
int main()
{
char arr[10] = "abcdef";
int ret = my_second_strlen(arr);
printf("%d\n", ret);
return 0;
}
这张图是对递归方法的解释!!!最后返回的也是size_t为6
3.指针-指针的方法
注意:指针减指针减去的是元素的个数!!!
代码如下(示例):
size_t my_third_strlen(const char* str)
{
assert(str != NULL);
const char* start = str;
while (*str != '\0')
{
str++;
}
return str - start;
}
int main()
{
char arr[10] = "abcdef";
int ret = my_third_strlen(arr);
printf("%d\n", ret);
return 0;
}
总结
以上就是今天要讲的内容,本文介绍了strlen库函数的使用和strlen函数的三次模拟实现过程,如果我的作品对你有帮助记得三连,我会顺着网线互关you!