【发布时间】:2017-12-09 14:37:31
【问题描述】:
我在 K&R 的第一章中编写了以下代码作为练习的一部分。该代码按预期替换了制表符和反斜杠,但它没有用 \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');
printf("\\b");
}
if (c == '\\')
{
putchar('\\');
putchar('\\');
}
if (c != '\t' && c != '\b' && c != '\\')
{
putchar(c);
}
}
return 0;
}
我查看了 Stack Overflow。 this 问题的答案是关于 shell 消耗退格,结果是我编写的代码永远不会看到退格。这让我想到了我的问题:我在键盘上提供的输入会发生什么?我假设这成为标准输入流的一部分。但是,很明显,并非我输入的所有字符都进入了我的代码。有人可以解释一下我的击键和我的代码处理该输入之间会发生什么处理吗?另外,有没有办法让我的代码在此处理发生之前读取标准输入缓冲区?
我希望这些问题是有意义的。我花了一段时间才弄清楚我想问什么,我不确定我是否完全弄清楚了。
【问题讨论】:
-
我相信你要研究的相关主题是终端(模拟器)。
-
您是否尝试将输入/输出重定向到文件?成功了吗?
-
我想你会发现第一个答案很有趣stackoverflow.com/questions/1798511/…
-
顺便说一句:为了完整性,有
"\a\b\t\n\v\f\r\"\'\?\\"。和\0, \7, \xC等