如何捕获退格?

时间:2011-03-26 14:31:20

标签: c

  

可能重复:
  how to check for the “backspace” character in C

我只想将其输入复制到其中 输出,用\t替换每个标签 退格\b,每个反斜杠 \\。但是,我使用类似的方法 比如\t替换每个标签不能 用\b替换每个退格。怎么可能 我捕获退格?

  #include<stdio.h>
    main(){
      int c;


      char tab='t';
      char bsps='b';

      int i;
      int j;
      while((c=getchar())!=EOF)
      { 

        if(c == 9)
        { 
            putchar(92);
            putchar(tab);

        } 
        else if(c == 8)
        { 
            putchar(92);
            putchar(bsps);
        } 
        else if(c == 92)
        { 
             putchar(92);
                 putchar(92);
        } 
        else putchar(c);
      }

    }

1 个答案:

答案 0 :(得分:0)

您的计划是正确的。问题是它永远不会看到被“吃掉”的退格字符是你操作系统的行编辑方法。

您键入 A Basckspace B ENTER ,但您的程序只获得 B 输入

我编译了你的程序并用我的操作系统进行了测试。

首先是一个简单的测试

$ echo -e 'a\bc' | wc
      1       1       4

这显示1个换行符,1个单词和4个字节。

然后运行程序

$ echo -e 'a\bc' | ./a.out 
a\bc