2026-10-18 08:54:18
在C语言中,strlen函数用于计算字符串的长度(即有效字符的个数,不包括结尾的空字符0)。以下是详细说明和示例:
基本用法函数原型
size_t strlen(const char *str);参数:str 是指向以0结尾的字符串的指针。
返回值:返回字符串的字符数量(不包含0),类型为size_t(通常是无符号整数)。
示例代码
#include <stdio.h>#include <string.h>int main() { char str[] = "Hello, World!"; size_t length = strlen(str); printf("字符串: "%s"n", str); printf("长度: %zun", length); // 输出: 13 return 0;}字符串必须以0结尾
如果字符串未正确终止(如缺少0),strlen会继续读取内存直到遇到0,导致未定义行为(如崩溃或错误结果)。
错误示例:char str[3] = {'a', 'b', 'c'}; // 无0结尾size_t len = strlen(str); // 危险!可能访问越界内存
不计算空字符0
即使字符串包含0在中间,strlen也会在第一个0处停止计数。
示例:char str[] = "abc0def";size_t len = strlen(str); // 返回3(只计算到第一个0)
空字符串的处理
空字符串""仅包含0,strlen返回0。
不修改原字符串
strlen是只读操作,不会改变字符串内容。
与sizeof的区别
strlen返回字符数(动态计算),而sizeof返回数组占用的内存大小(包括0)。
示例:char str[] = "abc";printf("%zun", strlen(str)); // 输出: 3printf("%zun", sizeof(str)); // 输出: 4(包含0)
性能考虑
strlen需要遍历字符串直到0,时间复杂度为O(n)。频繁调用时,建议缓存结果。
通过合理使用strlen,可以高效获取字符串长度,但需严格遵循其设计约束。