为什么字符串末尾的'\ b'没有效果?

时间:2016-07-26 12:48:22

标签: c backspace

以下是代码:

#include <stdio.h>

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

生成此输出:

WO WORD

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

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

这主要取决于你正在使用的shell /终端以及它如何解释退格字符。

您在上面描述的行为发生在命令提示符下的Windows上。该终端显然将光标移回后退空间的一个空格,但不删除该字符。退格后的任何字符都会覆盖以前写入的字符。

例如,如果你这样做:

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

您的输出将是:

WO WOxD

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

WO WO