为什么字符串末尾的 '\b' 不起作用?

Why the '\b' at the end of the string doesn't have effect?

下面是代码:

#include <stdio.h>

int main(int argc, char* argv[])
{
    printf("WORD\b\b WORD\b\b");
    return 0;
}

生成此输出:

WO WORD

问题是为什么最后一个 \b 在字符串末尾时对第二个词没有更具体的影响?

它确实有影响,影响是将光标移回,但 '\b' 不会删除任何字符,除非您覆盖它们。

如果您之后想打印其他内容,将从当前光标位置继续打印。

注意:此行为取决于您用来显示文本的终端。

这主要取决于您使用的 shell / 终端以及它如何解释回 space 个字符。

您上面描述的行为发生在 Windows 的命令提示符中。该终端显然将光标向后移动 space 一个 space,但不会删除该字符。后面打印的任何字符space 将覆盖以前写入的字符。

例如,如果您要这样做:

printf("WORD\b\b WORD\b\bx");

您的输出将是这样的:

WO WOxD

相比之下,运行 您在 bash 下的 Ubuntu 机器上的代码会产生以下输出:

WO WO