字符串初始化下边这个

char str [4]"abcd"; 这种定义在strlen(str)中为什么不恰当

什么叫不恰当?

你把4去掉,char str[] = "abcd";

你要知道字符串是以空字符结尾的,你的abcd都占用4个字节了,必须还需要1个字节来写入空字符才可以使用strlen()函数;这样子strlen()才能识别到字符串结束了。所以写成str[]和str[5],或者5以上的数字都可以。