C语言一个关于字符串的问题

为什么输出是6啊?

 

因为x的中间出现了字符串结束标识字符 '\0',因此strlen()函数仅计算到该结束字符之前的长度,即 a、\065、\t、\、\57、8,后面的结束符 \0 及其之后的值不在strlen()函数的计算范围之内

考查转义字符,6个字符分别为:
a
\065
\t
\\
\578
\095

#include <stdio.h>
#include <string.h>
int main()
{
    char x[]="a\065\t\\\578\095\r\nabc\n\n";
    for(int i=0;i<strlen(x);i++)
        printf("【%c】",x[i]);
    printf("长度:%d",strlen(x));
    return 0;    
}

输出:
【a】【5】【 】【\】【/】【8】长度:6

字符\n或\r都可以是字符串的终结标志。