为什么putchar(';\b';)不显示回显空间?

为什么putchar(';\b';)不显示回显空间?,c,io,C,Io,在这段代码中,当我输入“qweCtrl+DCtrl+D”时,不显示backspace。结果是: void review2() { int ch; while((ch = getchar()) != EOF) putchar(ch); putchar('\b'); putchar('\n'); putchar('\007'); } 在这段代码中,它是显示空间。 结果是 void review2() { int ch; wh

在这段代码中,当我输入“qweCtrl+DCtrl+D”时,不显示backspace。结果是:

void review2()
{
    int ch;
    while((ch = getchar()) != EOF)
        putchar(ch);
    putchar('\b');
    putchar('\n');
    putchar('\007');
}

在这段代码中,它是显示空间。 结果是

void review2()
{
    int ch;
    while((ch = getchar()) != EOF)
        putchar(ch);
    putchar('\b');
    putchar('\007');
}

为什么会发生这种情况?

退格字符只是移动光标,它不会删除显示器上显示的字符。

屏幕上的退格是无损的,即它不会覆盖最初已经存在的内容。尝试
putchar('\b');putchar(“”);putchar('\b')
以使用space@pmg在第二个示例中,“\b”覆盖“e”,但在第一个示例中,由于某种原因,我不知道putchar(“\n”)会中断此过程。不,在第二个示例中,
'\b'
将“打印位置”移动到“e”的顶部,在第二个示例中,“e”被“$”覆盖;在第一种情况下,“e”被(不可见、透明、逻辑)“\n”ctrl-d覆盖为eot,而不是bs
void review2()
{
    int ch;
    while((ch = getchar()) != EOF)
        putchar(ch);
    putchar('\b');
    putchar('\007');
}
$ ./a.out
qweqw$