KR - 可视化退格

时间:2015-08-29 11:30:24

标签: c kernighan-and-ritchie

我遇到了这个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似乎是一个类似的问题,但不太确定它是一样的。

1 个答案:

答案 0 :(得分:4)

我假设您在终端中运行程序然后键入一些输入。 终端通常处于熟化模式,其中退格将立即解释为请擦除前一个字符。 <{1}}不会返回退格。

如果你想测试你的程序是否正确处理了退格,管道它们在标准输入上,这就决定了终端与相关烹饪的使用:

getchar()