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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

若有以下程序片段:
char str[ ]="ab\n\012\\\"";
printf("%d",strlen(str));
上面程序片段的输出结果是 6

为什么字符串遇到/0没结束?
字符串最后两个引号""是代表什么?

4 个回复

倒序浏览
本帖最后由 布鲁兹老爷 于 2015-10-15 21:28 编辑

我输出了字符串一下,结果是
  1. ab

  2. \"
复制代码




然后查了下书,内容在c primer plus的封皮背面ASCII码表最上面。
内容是“
  1. 可以用反斜杠与八进制或16进制组合来表示单字符,例如'\012'和、'0xa'都表示字符新建行(LF),像"hello, \012my dear”这样的专一序列也可以作为字符串的一部分。^代表键盘的Ctrl“
复制代码


也就是说 \012代表一个字符。

012是八进制 012换成十进制是8+ 2 = 10; 10在ASCII码里是^J  就是 换行!



你这个字符串全部翻译出来就是a,b,换行,\012,\,"  总共六个。


倒数第二个双引号是和倒数第三个\一块的,表示你要输出一个双引号。

回复 使用道具 举报
\0 和\012这种的还是少出现在字符串当中比较好。

ASCII码中的八进制范围是0 - 0177 ,尽量别在字符串中用\ 0 ~ 0177吧。。
回复 使用道具 举报
6666大神牛逼,这个是题来的
回复 使用道具 举报
好复杂 啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马