黑马程序员技术交流社区
标题:
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 编辑
我输出了字符串一下,结果是
ab
\"
复制代码
然后查了下书,内容在c primer plus的封皮背面ASCII码表最上面。
内容是“
可以用反斜杠与八进制或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