一、首先我们了解strlen函数
size_t strlen ( const char * str );
- strlen返回size_t无符号类型,接收的是地址,加const修饰为了强调str不可修改。
- strlen的原理是:传入一个地址,strlen会向后计数增加直到遇到 '\0' 停止。
- 用strlen时需要引用头文件 #include <string.h>
二、strlen的实际运用
#include<stdio.h>
#include<string.h>
int main()
{
char arr[] = "abcde";
printf("%d\n", strlen(arr));
return 0;
}
运行结果:
注:"abcdef" 字符串末尾默认放置 ' \0 ',如果结尾没有 ' \0 ' 那么结果是随机值。
例如:
三、模拟实现strlen函数
1、count计数
#include<stdio.h>
int my_strlen(char* arr)
{
int count = 0;
while (*arr)
{
arr++;
count++;
}
return count;
}
int main()
{
char arr[] = "abcdef";
printf("%d ", my_strlen(arr));
return 0;
}
2、函数的递归
#include<stdio.h>
int my_strlen(char* str)
{
if (*str == '\0')
{
return 0;
}
else
{
return 1 + my_strlen(str + 1);
}
}
int main()
{
char arr[] = "abcd";
printf("%d\n",my_strlen(arr));
return 0;
}
3、指针减指针
#include <stdio.h>
int my_strlen(const char* str)
{
char* start = str;
while (*str)
{
str++;
}
return str - start;
}
int main()
{
char arr[] = "abcde";
printf("%d\n", my_strlen(arr));
return 0;
}