如何将退格键更改为“\b”?

zhe*_*nyi 4 c c++ visual-c++

我在“C 编程语言”中看到一个问题,它是这样的:编写一个程序将其输入复制到其输出,用 \t 替换每个制表符,用 \b 替换每个退格键,用 \ 替换每个反斜杠。这使得标签和

退格键以明确的方式可见。然后我写了一个这样的程序

#include<stdio.h>
int main(void)
{
    int c;
    while((c=getchar())!=EOF)
    {
        if(c=='\t')
        {
            putchar('\\');
            putchar('t');
        }
        if(c=='\b')
        {
            putchar('\\');
            putchar('b');
        }
        if(c=='\\')
        {

            putchar('\\');
            putchar('\\');

        }
        else{
            putchar(c);

        }


    }
    return 0;



}
Run Code Online (Sandbox Code Playgroud)

但是当我输入退格时,我不能得到'\b',那么我怎么能得到输出'\b'?即我的意思是,我怎么能输出退格?

Kei*_*son 6

键盘输入由操作系统预处理。大多数字符直接作为输入输入到您的程序中,但有些字符是经过特殊处理的。

在类 UNIX 系统上,标准输入通常是行缓冲的。系统会读取一整行文本,并且在您按下 之前不会将其传递给您的程序Enter。在读取该行时,系统会Backspace自行处理;它不是向缓冲区添加退格字符,而是擦除最近的字符。你的程序永远不会看到这个'\b'角色。

要输入您的程序可以看到的文字退格字符,在类 UNIX 系统上,您可以在它前面加上 Ctrl-V。根据您的 tty 和终端模拟器设置,键入Backspace键可能会传输 ASCII DEL 字符而不是退格符。要确保您的程序看到退格字符,请键入Ctrl-V Ctrl-H.

在非类 UNIX 系统(很可能是 Windows)上,可能有一种方法可以做类似的事情,但我不知道它是什么。

您还可以使用来自文件的输入来运行您的程序。在输入文件中输入退格字符作为练习(这取决于您的文本编辑器的工作方式)。


smu*_*shi 0

退格键通常会被 shell 吃掉。使用Ctrl+H测试退格键。

有关详细信息,请参阅5. 删除和退格键。