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”,正如维基百科所建议的: