A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

想要输出用strlen()表示的字符串的字节数,如果我没理解错的话,strlen()应该是遇到"\0"之后就结束了,
并且不把"\0"算入字节数,可是为什么<char str[ ]="ab\013\r\082\\\"";>这段字符输出的字节数是4呢?
求大神解答...多谢了!


4 个回复

倒序浏览
看了一下 , 发现我也不懂 ,  同问 , 哪位大神帮忙解答下 , 多谢了
回复 使用道具 举报
本帖最后由 从心开始のBean 于 2016-2-28 21:19 编辑

以上语句等效于char str[] = {'a','b','\','0',.....};
而非 char str[] = {'a','b','\0',....};
我是这么理解的, <char str[ ]="ab\013\r\082\\\"";>语句中, "\0"分别表示'\'和'0', 跟'\0'不是一回事, 因为\0代表空位, 在"xxxx"类似双引号字符串中并不显示.
同小白, 欢迎大神指正
回复 使用道具 举报
你如果把这个字符串打印一下,你会发现显示结果是有问题的。原因是\013(垂直制表符)、\r(回车)是转义字符。\013是八进制的ASCII码。而\082是非法的字符,所以到这里就算是字符串结束了。我也是现学现用,不对请指教
回复 使用道具 举报
同为小白不懂!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马