你可能忽略的strlen盲区

常见用法

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

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

可能忽略的盲区

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

总结

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

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