(一)前言
1.什么是strlen函数?
在C语言中strlen函数是一个标准库函数,其作用为计算字符串的长度,但是不包括“\0”在内。
该函数的语法为“size_t strlen(const char*str)”,其参数str表示要计算长度的字符串,返回值为字符串的长度,返回类型是size_t(无符号整型)。
(二)代码实现
1.计数器法
#include<stdio.h>
size_t my_strlen(char* str)
{
size_t count = 0;
while (*str != '\0')
{
str++;//char*指针向后走一步加1,是跳过一个字符,指向下一个字符
count++;
}
return count;
}
int main()
{
char arr[] = "abcefg";
size_t len = my_strlen(arr);//传递的是数组首元素的地址
printf("%zd\n", len);
return 0;
}
2.递归
#include<stdio.h>
size_t my_strlen(char* str)
{
if (*str == '\0')//如果str指向的第一个字符就是'\0',就返回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;
}
算法思路:
//计算 my_strlen("abc")
// 1+my_strlen("bc")
// 1+my_strlen("c")
// 1+strlen(" ")
// 0 ------>(递归出口)
3.指针
#include<stdio.h>
size_t my_strlen(int * str)
{
char* start=str;//start记录起始位置的地址
while(*str!='\0')
{
str++;
}//循环结束时,此时str指向数组的最后一个元素'\0'
return str-start;//指针-指针,得到指针中间的元素个数
}
int main()
{
int arr[]="abcdef";
size_t len=my_strlen(arr);
printf("%zd\n",len);
return 0;
}
(三)代码结果: