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