【发布时间】:2013-04-17 05:47:38
【问题描述】:
当我在包含不可打印字符的缓冲区 buf 上发出命令 p buf 时,当 gdb 尝试打印不可打印字符时,我通常会得到八进制输出。
但是,这次我得到了这样的字符串。
foobar\341\204\004\b\357\373\377\277
\b 在这里是什么意思?
【问题讨论】:
当我在包含不可打印字符的缓冲区 buf 上发出命令 p buf 时,当 gdb 尝试打印不可打印字符时,我通常会得到八进制输出。
但是,这次我得到了这样的字符串。
foobar\341\204\004\b\357\373\377\277
\b 在这里是什么意思?
【问题讨论】:
\b 是退格字符(\010,如果您使用的是 ASCII)。
以下是 C 标准定义的其余转义序列(5.2.2 字符显示语义):
2 表示执行中非图形字符的字母转义序列 字符集旨在在显示设备上产生如下操作:
\a(警报)在不改变活动位置的情况下产生声音或可见警报。
\b(退格)将活动位置移动到当前行的前一个位置。如果 活动位置是在一行的初始位置,显示的行为 设备未指定。
\f(换页)将活动位置移动到下一个开始时的初始位置 逻辑页面。
\n(新行)将活动位置移动到下一行的初始位置。
\r(回车)将活动位置移动到当前行的初始位置。
\t(水平制表符)将活动位置移动到下一个水平制表位置 在当前行。如果活动位置处于或超过最后定义的水平 制表位置,显示设备的行为未指定。
\v(垂直标签)将活动位置移动到下一个垂直的初始位置 制表位置。如果活动位置位于或超过最后定义的垂直 制表位置,显示设备的行为未指定。
【讨论】:
\b 表示退格 ASCII 字符(其代码为 8 或八进制的\010)
【讨论】: