C语言字符串长度的问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 07:28:31
"s\n\016"长度为3,为什么
"s\n\0166"为4,WHY?

你肯定是用strlen来测的,它是只针对有效字符串,也就是遇\0而止,\0并不算在其中。若是sizeof测的,就是所有的字符长度之和,包括\0。另外,若所给的字符串里的相邻字符能够成转义字符时,以转义字符为先,而不是屏幕上所显示的单个字符了。所谓转义字符,即由\后面紧接八进制(当能够成三位或者两位的合法八进制数),或者十六进制(特点是有个x开头)时,它所代表的是这个数对应的ASC码代表的字符。所以\016是一个整体的转义字符优先,而不能是组成\0。

s 1个字母
\n 1个新行符号
\016 1位8进制数
总的 3 个

s 1个字母
\n 1个新行符号
\016 1位8进制数
6 1个数字
总的 4个