c语言关于字符串长度的问题

char ss[5]="hello";
printf("len:%d\n",strlen(ss));

为什么得到的len是6呢???

题目中的代码应该会报错.
C语言中隐含用字符 '\0' 标志字符串常量的结束,因此需要定义长度为6的字符数组。
即:

  char ss[6] = "hello";
    printf("len:%d\n", strlen(ss));  //输出为len:5 

strlen函数在计算长度时不包含结束字符,所以len应为5.

如果对您有帮助,请点击采纳答案好吗,谢谢~~

C语言的字符串还有字符串结束符号,‘/0’又叫空字符。

在用数组保存字符串时,会默认在后面下/0(ascii 码的值为0的字符),如果数组的长度不够时则不会在后面存储,strlen函数内部实现会从头一直往后
找直到到/0,截止,不包括/0,你的代码strlen函数会出现发生越界的情况。

还要加上一个“/0”

图片说明
要考虑到隐藏字符'\0'
图片说明

都是正解………lol