c语言strlen问题

为什么两种赋值方式不一样,其strlen计算结果也不一样,都是赋值相同的字符,第一个碰到零会结束,第二个碰到零却没有结束。按照我的想法,第二种也应该是2

img

img

字符串结束标识是ascii为0,不是字符0.第二个字符数组没有结束标志0,strlen会一直向后查找,直到遇到0
应该为"21\0"

strlen函数碰到结束符'\0'时结束,并返回结束符之前的长度,在给字符数组赋值完毕后,系统会自动给数组加上结束符,而你的数组大小为3,存储3个字符后就无法存储结束符'\0',所以才会出现上面的问题,你可以把数组大小弄大一些,试一下