黑马程序员技术交流社区

标题: 关于字符串长度 [打印本页]

作者: Mr.Yan    时间: 2015-11-24 23:58
标题: 关于字符串长度
char str[ ]="ab\013\r\082\\\"";   //
printf("%d",strlen(str));
上面程序片段的输出结果是 ( )。
A. 4            B. 9            C. 10                 D. 11


该睡了,明天解答{:2_36:}
作者: 小贼船    时间: 2015-11-25 15:24
是D吗。。。

作者: sd6628611    时间: 2015-11-25 16:19
答案是A,4个
a的长度是1
b的长度是1
\013是一个八进制的数,所以长度也是1
\r把光标换到当前行的开头,然后\r后面的字符覆盖原来已经打印的字符.所以之前的长度白算
另外\082就不同了,先遇到8,不属于八进制的东西,八进制的“解析”就结束了 所以相当于ascii码的8和2两个字符组成的子串,所以长度就是2。
\\代表一个反斜线字符'\'长度是1
\"代表一个双引号字符'"'长度也是1
所以最后答案2+1+1=4
作者: 韦德460    时间: 2015-11-25 23:28
楼上说得好!
作者: Newbee_123    时间: 2015-11-26 20:02
完美答案。。
作者: 刘耀宗    时间: 2015-11-26 20:06
四个遇到杠0就截止了…字符串长度和数组长度要好好区分
作者: 106105076    时间: 2015-11-26 20:30
不是遇到\0就结束了吗??
作者: IPswhatb“is”    时间: 2015-11-26 23:47
大神解答,,,但是还没看懂




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2