C语言详细解读函数:strlen()函数

💓 博客主页:Kitten饭团的CSDN主页

📁 文章专栏:C语言专栏

期待您的关注

目录

一、strlen函数的基本概念

1.1 函数定义

1.2 功能描述

二、strlen函数的使用方法

2.1 基本用法示例

2.2 常用场景

三、strlen函数的实现原理

四、strlen函数的注意事项

4.1 字符串必须以\0结尾

4.2 与sizeof的区别

一、strlen函数的基本概念

函数概念来自于网站http://cplusplus.com

头文件为

1.1 函数定义

函数的原型:

参数说明:

🌈 函数参数str的含义:指向以\0结尾的C字符串的指针。

🌈 参数类型char*的含义:表示传递的参数为char型的常目标指针。

返回值:

🌈 返回值类型size_t的含义:表示字符串长度的无符号整数(unsigned int)类型。

1.2 功能描述

功能:获取字符串的长度。

实现原理:

🌈 C 字符串的长度由终止空字符(\0)决定。

🌈 strlen计算从字符串开头到\0之间的字符数,不包括\0本身。

二、strlen函数的使用方法

2.1 基本用法示例

使用方法:

#include

#include // 包含了strlen库函数的定义

int main()

{

char str[128] = "Hello,World!"; // 定义字符数组str容量为128

int len = strlen(str); // 定义整数类型int len,然后把strlen(str)函数的返回值赋值给len

printf("Length of string: %d\n", len); // 输出:12

return 0;

}

打印结果:

由此可见打印结果不包括结束符\0。

2.2 常用场景

字符串的遍历:

for (int i = 0; i < strlen(str); i++)

{

printf("%c\n", str[i]);

}

三、strlen函数的实现原理

内部实现机制:根据函数的基本概念来写一个自己的strlen函数

示例代码:

#include

#include

// 给类型取个别名

typedef unsigned long my_size_t; // 简化类型的命名,主要是为了方便移植

// 自己写的库

/**

* @brief 求一个指定字符串的长度

* @note None

* @param s:需要求长度的字符串

* @retval 成功:返回字符串的长度,不包含字符串结束标记'\0'

失败:返回0

*/

my_size_t MyLib_StrLen(const char *s)

{

// 1、如果传进来的字符串是空的,那就没有必要继续下面的判断了

if ( s == NULL)

return 0; // 失败,返回0

// 2、计算从左到右,一直到'\0',有多少个字符

my_size_t count = 0;

while ( *s != '\0')

{

count++;

s++;

}

// 3、返回计算的字符串的长度

return cnt;

}

// 主函数

int main()

{

// (1)、官方写的库

const char str1[] = "Hello,Fantuan!";

size_t len1 = strlen(str1);

printf("len1 == %zu\n", len1); // 无符号整形的打印 - %zu

// (2)、自己写的库

const char str2[] = "Hello,Fantuan!";

size_t len2 = MyLib_StrLen(str2);

printf("len2 == %zu\n", len2);

return 0;

}

四、strlen函数的注意事项

4.1 字符串必须以\0结尾

核心问题:

🌈 strlen函数通过查找终止符\0来确定字符串的长度。

🌈 如果字符串没有以\0结尾,strlen会继续读取内存,直到遇到\0,这可能导致未定义行为(如访问非法内存、程序崩溃等)。

示例:

char str[5] = {'H', 'e', 'l', 'l', 'o'}; // 未以\0结尾

printf("Length: %zu\n", strlen(str)); // 未定义行为

问题分析:

🌈 str数组没有以\0结尾,strlen会继续读取内存,直到遇到\0,可能导致程序崩溃或返回错误结果。

4.2 与sizeof的区别

sizeof是一个运算符,用于计算变量或数据类型占用的内存大小(包括\0)。

streln是一个库函数,用于计算字符串的实际长度(不包括\0)。

strlen函数的内容到此结束了,要是有不足希望各位能够在评论区指出,要是文章对你有帮助,可以给个免费的赞和收藏💞💞💞