为什么字符串末尾的 '\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
下面是代码:
#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