这里是代码如下:为什么字符串末尾的' b'不起作用?
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("WORD\b\b WORD\b\b");
return 0;
}
产生以下输出:
WO WORD
问题是为什么最后\b
不会对所述第二单词的效果更具体地,当它们是在端的字符串?
这里是代码如下:为什么字符串末尾的' b'不起作用?
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("WORD\b\b WORD\b\b");
return 0;
}
产生以下输出:
WO WORD
问题是为什么最后\b
不会对所述第二单词的效果更具体地,当它们是在端的字符串?
它确实有影响,其影响是将光标移回,但'\b'
不会删除任何字符,除非您覆盖它们。
如果您想要打印其他内容,打印将从当前光标位置恢复。
注意:此行为取决于您用于显示文本的终端。
这主要取决于您使用的shell /终端以及它如何解释退格字符。
您在上面描述的行为发生在Windows的命令提示符中。该终端显然将光标移回退格上的一个空格,但不删除该字符。在退格之后打印的任何字符都会覆盖先前写入的字符。
例如,如果你做到这一点:
printf("WORD\b\b WORD\b\bx");
你的输出会是这样:
WO WOxD
相反,在下面的bash下的结果运行的Ubuntu的机器上的代码输出:
WO WO
你在使用什么操作系统和终端? – dbush
我想这是因为'\ b'只将光标向后移动一步,而不是删除任何字符。 'R'和'D'从第一个'WORD'消失的原因是因为你用空间和'W'覆盖它们。 – gurka
'WORD \ b \ b WORD \ b \ b'会发生什么?我怀疑你的终端将光标移回但不擦除字符。 – Quentin