2

在换行符之前的字符串末尾的 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 ?)

为什么会这样?

4

2 回答 2

3

如果您使用\n\b,它可以随心所欲地做。就目前而言,它可能会引发更多问题。C99,§5.2.2/2 字符显示语义:

\b (退格) 将活动位置移动到当前行的前一个位置。如果活动位置在一行的初始位置,则显示设备的行为是未指定的。

由于它只指定移动“活动位置”,我猜它实际上并没有义务擦除任何东西。

于 2014-09-10T07:10:51.247 回答
1

\b 只会将光标向后移动一个字符,但不会删除那里的字符。并将printf 打印出从开始到当前光标所在位置的所有内容。

于 2014-09-10T07:13:56.200 回答