云计算百科
云计算领域专业知识百科平台

一文搞懂 `strlen` —— 字符串长度测量器

一、strlen 是啥?

strlen 是 C 语言标准库里的一个函数,专门用来计算字符串的长度(不含结尾的 '\\0')。

通俗说:它从字符串开头一个个数,数到 '\\0' 就停,'\\0' 本身不算。


二、怎么用?

#include <string.h> // 别忘了这个头文件

size_t strlen(const char *str);

  • 参数:字符指针(字符串首地址)
  • 返回值:size_t(无符号整数,就是长度)

三、举个例子

#include <stdio.h>
#include <string.h>

int main() {
char s[] = "hello";
printf("%zu\\n", strlen(s)); // 输出 5
return 0;
}

"hello" 在内存里其实是 h e l l o \\0,strlen 只数到 o,所以是 5。


四、重要!和 sizeof 的区别(面试常问)

特性strlensizeof
是函数 ❌ 是运算符
计算时机 运行时 编译时
结果 字符串实际字符个数(不含 \\0) 变量占用的内存字节数数
对数组 遍历直到 \\0 返回整个数组大小小

char s[] = "hello";
printf("%zu\\n", strlen(s)); // 5
printf("%zu\\n", sizeof(s)); // 6 (因为包含了 '\\0')


五、避坑指南

  • 必须保证字符串以 '\\0' 结尾,否则 strlen 会一直往后数,直到遇到内存中的随机 0,结果不可预知(容易崩溃)。
  • 不能传 NULL,会段错误。
  • 返回值是 size_t,无符号,别和负数比较(易出 bug)。

// 错误示范
char buf[10] = "abc"; // 实际后面自动补 '\\0',安全
char bad[3] = {'a','b','c'}; // 没有 '\\0'!strlen(bad) 危险!


六、自己实现一个简易版(加深理解)

size_t my_strlen(const char *s) {
size_t len = 0;
while (s[len] != '\\0') {
len++;
}
return len;
}

是不是超简单?就是 数到零就停。。


七、总结一句话

strlen 只关心从开头到第一个 '\\0' 之间的字符个数,不关心内存有多大。


如果你觉得有帮助,欢迎点赞、收藏、评论,让更多人看到!

赞(0)
未经允许不得转载:网硕互联帮助中心 » 一文搞懂 `strlen` —— 字符串长度测量器
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!