所以我终于阅读了K&R,我在前几页中学到了一些东西,有一个逃生angular色,\b

因此,我去测试它,并且有一些非常奇怪的行为:

#include <stdio.h>

main ()
{
    printf("hello worl\b\bd\n");
}

输出是

hello wodl

谁能解释一下?

答案

您的结果会因您使用的是哪种终端或控制台程序而有所不同,但是是的,大多数\b是一个无损Backpace。它使光标向后移动,但不会删除那里的内容。

所以hello worl部分,代码输出


hello worl
          ^

…(在哪里^显示光标在哪里)然后输出两个\b将光标向后移动两个地方的字符没有擦除(在您的终端上):


hello worl
        ^

注意光标现在在r。然后输出d,覆盖r并给我们:


hello wodl
         ^

最后,它输出\n,这是一个无损的新线(同样,在大多数终端,显然是您的终端),所以l保持不变,光标移动到下一行的开头。

来自: stackoverflow.com