Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何捕捉退格?_C - Fatal编程技术网

C 如何捕捉退格?

C 如何捕捉退格?,c,C,可能重复: 我只想把它的输入复制到它的 输出,将每个选项卡替换为\t,每个 反斜杠按\b,每个反斜杠按 \\。然而,我使用了类似的方法 如将每个选项卡替换为\t无法 用\b替换每个退格。如何 我捕获退格 #include<stdio.h> main(){ int c; char tab='t'; char bsps='b'; int i; int j; while((c=getchar())!

可能重复:

我只想把它的输入复制到它的 输出,将每个选项卡替换为
\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);
      }

    }
#包括
main(){
INTC;
char tab='t';
字符bsps='b';
int i;
int j;
而((c=getchar())!=EOF)
{ 
如果(c==9)
{ 
普查尔(92);
putchar(tab);
} 
else如果(c==8)
{ 
普查尔(92);
putchar(bsps);
} 
否则如果(c==92)
{ 
普查尔(92);
普查尔(92);
} 
else putchar(c);
}
}

您的程序是正确的。问题是,它从来没有看到被“吃掉”的退格字符是操作系统的行编辑方法

您键入ABasckspaceBENTER,但您的程序仅获取BENTER

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

首先是一个简单的测试

$ echo -e 'a\bc' | wc 1 1 4 $echo-e'a\bc'| wc 1 1 4 这显示1个换行符、1个字和4个字节

然后运行程序

$ echo -e 'a\bc' | ./a.out a\bc $echo-e'a\bc'|/a.out a\bc
你的程序是正确的。问题是,它从来没有看到被“吃掉”的退格字符是操作系统的行编辑方法

您键入ABasckspaceBENTER,但您的程序仅获取BENTER

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

首先是一个简单的测试

$ echo -e 'a\bc' | wc 1 1 4 $echo-e'a\bc'| wc 1 1 4 这显示1个换行符、1个字和4个字节

然后运行程序

$ echo -e 'a\bc' | ./a.out a\bc $echo-e'a\bc'|/a.out a\bc
我猜你在研究c编程语言的问题1-10。您可以使用(ctrl+h)输入“backspace”,正如维基百科所建议的:我猜您正在研究c编程语言的问题1-10。您可以使用(ctrl+h)输入“backspace”,正如维基百科所建议的: