退格\ b在C格式字符串中的\ n之前不起作用

时间:2014-09-10 07:05:07

标签: c string format-string

在忽略换行符之前的字符串末尾的C字符串中的退格符转义字符(在Mac OS X终端中)。

printf("hello, worl\bd"); // => hello word (OK)
printf("hello, world\b"); // => hello worl (OK)
printf("hello, world\b\n"); // => hello world\n (Why not hello worl\n ?)

为什么会这样?

2 个答案:

答案 0 :(得分:2)

如果您使用\n\b,则可以随意使用它。就目前而言,可能会有更多问题。 C99,§5.2.2/ 2字符显示语义:

  

\ b(退格键)将活动位置移动到当前行的上一个位置。如果   活动位置位于一条线的初始位置,即显示的行为   设备未指定。

由于它只指定移动“活动位置”,我猜它实际上并不是要删除任何东西。

答案 1 :(得分:1)

\ b只会将光标移回一个字符,但不会删除那里的字符。并且printf将打印出从开始到当前光标所在的任何内容。