我在 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/