下面看个程序:
#include <stdio.h>
int main()
{
char buf[4] = "abcd";
int len = strlen(buf);
printf("%d\n",len);
}
输出结果不是4,一般可能是6,也可能是别的。为什么会这样呢?
strlen()函数遇到 \0 截止,buf中4个元素没有\0 这个结束符,导致strlen读这个数组读到最后没发现\0,它会越过数组边界,读其他内存里的字符,等读到\0时,才会截止,读期间strlen的计数一直增加,明明buf已经读完,strlen还没截止,导致strlen()返回值大于4.