我在“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'?即我的意思是,我怎么能输出退格?
键盘输入由操作系统预处理。大多数字符直接作为输入输入到您的程序中,但有些字符是经过特殊处理的。
在类 UNIX 系统上,标准输入通常是行缓冲的。系统会读取一整行文本,并且在您按下 之前不会将其传递给您的程序Enter。在读取该行时,系统会Backspace自行处理;它不是向缓冲区添加退格字符,而是擦除最近的字符。你的程序永远不会看到这个'\b'角色。
要输入您的程序可以看到的文字退格字符,在类 UNIX 系统上,您可以在它前面加上 Ctrl-V。根据您的 tty 和终端模拟器设置,键入Backspace键可能会传输 ASCII DEL 字符而不是退格符。要确保您的程序看到退格字符,请键入Ctrl-V Ctrl-H.
在非类 UNIX 系统(很可能是 Windows)上,可能有一种方法可以做类似的事情,但我不知道它是什么。
您还可以使用来自文件的输入来运行您的程序。在输入文件中输入退格字符作为练习(这取决于您的文本编辑器的工作方式)。