当 \b
在字符串中使用时。
int main (void)
{
printf("asdfhjk\bll");
return 0;
}
输出:
asdfhjll
当 \b
用于字符串的末尾时。
int main (void)
{
printf("asdfhjkll\b");
return 0;
}
输出:
asdfhjkll
为什么最后一个字符 l
没有被 \b
删除。根据 \b
的工作原理,\b
之前的字符被删除。在字符串中间使用时效果很好,但在末尾使用时效果不佳。为什么?
最佳答案
字符 \b
是一个退格字符。 它将光标向后移动一个位置而不向屏幕写入任何字符。
考虑您的第一个示例:asdfhjk\bll
。在“打印”退格字符之前,屏幕看起来像这样:
asdfhjk
^
... 其中 ^
表示光标位置。打印完 \b
之后,就是这样
asdfhjk
^
最后两个字符覆盖k
:
asdfhjll
^
对于第二个例子asdfhjkll\b
。在打印 \b
之前:
asdfhjkll
^
及之后:
asdfhjkll
^
没有字符被删除,但是光标向后移动了一个字符。如果您打印任何其他内容,最后的 l
将被覆盖。
关于c - 为什么\b 在字符串中间使用时会删除在\b 之前写入的一个字符,但在末尾使用时却不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51457142/