当我在包含不可打印字符p buf
的缓冲区上发出命令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
八进制)