c++ - 如何将退格键更改为 '\b' ?

标签 c++ c visual-c++

我在 The C Programming Language 中看到一个问题。就像这样: 编写一个程序将其输入复制到输出,用\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;
}

但是当我输入退格时,我无法得到'\b',那我如何得到输出'\b'呢?即,我的意思是,如何输出退格键?

最佳答案

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

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

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

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

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

关于c++ - 如何将退格键更改为 '\b' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26899470/

相关文章:

c - 逗号运算符 , 的作用是什么?

c++ - GCC 与 Clang 关于临时绑定(bind)到另一个临时的右值引用的生命周期

c++ - 将 HTTP header 添加到 Windows 上的所有传出数据包?

c++ - 已删除函数 unique_ptr 的使用

c++ - 来自仅消息窗口的电源状态更改通知

c++ - 跨线程使用事件句柄 - C++

c++ - 从 char 到 const char* 的无效转换

c - 寻找一种快速轮廓线渲染算法

c++ - 从记录集中保存值

c++ - c++ 中 strcpy 的替代方案