前言:
通过C语言字符串函数的知识,这篇将对strlen函数进行深入学习底层原理的知识,并模拟实现对应功能。
/知识点汇总/
函数原型:size_t strlen( const char string );
函数功能:返回参数的字符串长度
头文件:
使用注意事项:
(1)、以双引号初始化括起来的字符串自动识别’\0’字符串结束标志位,如“abcdef”本质是“abcdef\0”
(2)、以数组大括号初始化字符元素时,需手动添加‘0’字符串结束标志位,如{‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘\0’}
(3)、strlen函数的参数是char
示例代码如下:
#include
#include
//使用strlen函数,需要调用头文件 ----
int main()
{
char arr[] = "hello";
printf("%d\n",strlen(arr));//计算字符串长度,不包括'\0'
char arr2[] = {'a','b','c','d','e','f','\0'};
printf("%d\n",strlen(arr));//计算字符串长度,不包括'\0'
return 0;
}
#include
size_t my_strlen(char* str)
{
size_t count = 0;
while (*str++ != '\0')
{
count++;
}
return count;
}
int main()
{
char arr[] = "abcdef";
size_t len = my_strlen(arr);
printf("%zd\n", len);
return 0;
}
#include
size_t my_strlen(const char* str)
{
if (*str == '\0')
return 0;
else
return 1 + my_strlen(str + 1);
}
int main()
{
char arr[] = "abcdef";
size_t len = my_strlen(arr);
printf("%zd\n", len);
return 0;
}
#include
size_t my_strlen(const char* str)
{
char* ret = str;
while (*str != '\0')
{
str++;
}
return str - ret;
}
int main()
{
char arr[] = "abcdef";
size_t len = my_strlen(arr);
printf("%zd\n", len);
return 0;
}
学习函数的最实用的方式就是用自己的逻辑简单实现一些类似的功能
半亩方糖一鉴开,天光云影共徘徊。
问渠哪得清如许?为有源头活水来。–朱熹(观书有感)