【问题标题】:why putchar('\b') not show back space?为什么 putchar('\b') 不显示退格?
【发布时间】:2020-09-05 08:03:22
【问题描述】:
void review2()
{
    int ch;
    while((ch = getchar()) != EOF)
        putchar(ch);
    putchar('\b');
    putchar('\n');
    putchar('\007');
}

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

$ ./a.out
qweqwe
$
    

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

在这段代码中它是显示退格。 结果是

$ ./a.out
qweqw$

为什么会这样?

【问题讨论】:

  • 屏幕上的退格键是非破坏性的,即它不会首先覆盖已经存在的内容。尝试putchar('\b');putchar(' ');putchar('\b'); 用空格覆盖预先存在的数据
  • @pmg 在第二个示例中,'\b' 覆盖 'e',但在第一个示例中由于某种原因我不知道 putchar('\n') 会中断此过程。
  • 不,'\b' 将“打印位置”移动到“e”之上,在第二个示例中,“e”被“$”覆盖;在第一种情况下,“e”被(不可见,透明,逻辑)“\n”覆盖
  • ctrl-d 是eot,不是bs

标签: c io


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-04-05
    • 2016-05-19
    • 2014-07-08
    • 1970-01-01
    • 2022-12-17
    • 2012-03-25
    • 2012-10-29
    • 2013-06-30
    • 1970-01-01
    相关资源
    最近更新 更多