我个人的理解是这样的,“ab\070\\14\n”当中的'\0'和‘\\’是没有算进去的;原因:数组一般都以‘\0’结尾,strlen是算出有效长度,当定义一个数组然后清空它之后,它里面的内容就是每个都是‘\0’,它的有效长度自然也是0;而'\'是有注释的作用,如果不是属于ascii码表中的转义字符,它就会被注释掉了。转义字符就是‘\n’、'\r'等~这些。。。你把这个字符串打印出来看一下剩什么就知道了。
可是打出来是”ab8\14“,不理解了我+_+
char str[] = "ab\070\\14\n";
char ss[] = "\0\1\2\\";
printf("len =%d %d ,str =%s %s \n",strlen(ss),strlen(str),ss,str);
结果:0,7,(空),ab8\14