我遇到了这个KR练习1-10:
编写程序将其输入复制到其输出,用\ t替换每个选项卡,用\ b替换每个退格键,用\\替换每个反斜杠。
这是一个非常简单的解决方案:
#include <stdio.h>
int main()
{
int c;
const char TAB = '\t';
const char BACKSPACE = '\b';
const char BACKSLASH = '\\';
while( EOF != ( c = getchar() ) )
{
if( TAB == c )
{
printf( "\\t" );
}
else if( BACKSPACE == c )
{
printf( "\\b" );
}
else if( BACKSLASH == c )
{
printf( "\\\\" );
}
else
{
putchar( c );
}
}
return 0;
}
我发现可视化 Tab 和\
(反斜杠)但不是 Backspace 。看起来 Backspace s不会被控制台记住?我在Ubuntu 14.04上。
This似乎是一个类似的问题,但不太确定它是一样的。
答案 0 :(得分:4)
我假设您在终端中运行程序然后键入一些输入。 终端通常处于熟化模式,其中退格将立即解释为请擦除前一个字符。 <{1}}不会返回退格。
如果你想测试你的程序是否正确处理了退格,管道它们在标准输入上,这就决定了终端与相关烹饪的使用:
getchar()