黑马程序员技术交流社区

标题: C语言中字符串中的转义字符问题 [打印本页]

作者: 313919810    时间: 2015-10-15 20:49
标题: C语言中字符串中的转义字符问题
若有以下程序片段:
char str[ ]="ab\n\012\\\"";
printf("%d",strlen(str));
上面程序片段的输出结果是 6

为什么字符串遇到/0没结束?
字符串最后两个引号""是代表什么?
作者: 布鲁兹老爷    时间: 2015-10-15 21:22
本帖最后由 布鲁兹老爷 于 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,\,"  总共六个。


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


作者: 布鲁兹老爷    时间: 2015-10-15 21:25
\0 和\012这种的还是少出现在字符串当中比较好。

ASCII码中的八进制范围是0 - 0177 ,尽量别在字符串中用\ 0 ~ 0177吧。。
作者: 313919810    时间: 2015-10-15 22:54
6666大神牛逼,这个是题来的
作者: hulk374    时间: 2015-10-16 07:42
好复杂 啊




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