关于字符数组的问题
当定义char sp[]= "\x69\082\n "时
printf( "%d ",strlen(sp));的结果是1
可是当char sp[]= "\x69\072\n ";时
结果是3.
为什么第一句话里面\0是结束符,可是在第二句话里面不是呢?
[解决办法]
当定义char sp[]="\x69\082\n"时 数组sp共占6个字节.
\x69 \0 8 2 \n \0
这里的第一个问题是8进制数所能使用的最大数是7,所以就像1楼兄弟说的那样此时\0会单独成为一个字符.用strlen函数求sp长度时在第2个字节中先遇到\0所以strlen函数就会当作该字符串已结束.在strlen眼里此时sp是由两个字节的内容组成\x69 与 \0.且因为strlen函数并不把\0计算成字符串的长度.所以得出该值为1.
可是当char sp[]="\x69\072\n";时 数组中的内容共占4个字节.
\x69 \072 \n \0
同上面的理由因为strlen函数并不把\0计算在字符长度内,所以该strlen值为3...