2016-07-26 125 views
5

这里是代码如下:为什么字符串末尾的' b'不起作用?

#include <stdio.h> 

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

产生以下输出:

WO WORD 

问题是为什么最后\b不会对所述第二单词的效果更具体地,当它们是在端的字符串?

+0

你在使用什么操作系统和终端? – dbush

+5

我想这是因为'\ b'只将光标向后移动一步,而不是删除任何字符。 'R'和'D'从第一个'WORD'消失的原因是因为你用空间和'W'覆盖它们。 – gurka

+1

'WORD \ b \ b WORD \ b \ b'会发生什么?我怀疑你的终端将光标移回但不擦除字符。 – Quentin

回答

4

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

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

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

2

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

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

例如,如果你做到这一点:

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

你的输出会是这样:

WO WOxD 

相反,在下面的bash下的结果运行的Ubuntu的机器上的代码输出:

WO WO 
相关问题