你可能忽略的strlen盲区

本文深入解析strlen与sizeof在计算字符串长度时的区别。sizeof包括结束符'',而strlen从首字符计数至''为止。文章通过实例说明了两者在不同情况下的应用及潜在陷阱。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常见用法

在我们日常编程时,计算字符串的长度可能经常用到两个关键词sizeof和strlen。那么这两者有什么区别呢?

sizeof在计算长度时会包含结束符’\0’。strlen计算长度时第一个字符开始到结束符’\0’(长度不包含’\0’)。举例:字符串**“12345”**用sizeof计算长度为6,因为是5个字符加结束符等于6,strlen计算长度为5,因为不包含结束符。

可能忽略的盲区

那么现在有个问题如果一个字符串没有了结束符用strlen来计算的话,你知道得出的长度是多少吗?以下用一次小例子测试一下看跟你想的结果是否一样。
在这里插入图片描述
我们编译一下然后看结果:
在这里插入图片描述
运行结果是6。

总结

但为什么是6呢?我们定义的是5个字节的数组,那么第6、第7个字节的值可为任意一个值,因此第6个字节可能不为0,不为0那么strlen计算长度时就会计算上,刚好第7个字节的值为0了,那么strlen就停止计算看到的结果就是6。这个结果不是唯一答案,重新编译代码后可能第6个字节的值是0,答案长度就是5。
总结:因此记得strlen是遇到结束符’\0’才结束计算长度。提醒一下,以后要是定义不要忘记’\0’,以免使用strlen时候可能出现歧义。

此贴是笔者第一篇贴文,仅仅是我个人的理解。如果我理解错了,请大佬们给我指出错处,互相交流,感谢读者和大佬们支持!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值