C 通过将每个退格替换为\b将其输入复制到输出的程序

C 通过将每个退格替换为\b将其输入复制到输出的程序,c,C,但当我按backspace\b时,屏幕上不会显示该按钮 但当我按backspace时,不会显示\b来代替它 您的代码编译得很好,但是退格不会打印到控制台。 与其他格式字符不同,backspace不会显示 原因是,如上所述: int main() { int c, d; while ( ( c = getchar() ) != EOF ) { d = 0; if (c == '\b') { putchar('\\'

但当我按backspace
\b
时,屏幕上不会显示该按钮

但当我按backspace时,不会显示\b来代替它

您的代码编译得很好,但是退格不会打印到控制台。 与其他格式字符不同,backspace不会显示

原因是,如上所述:

int main()    
{
   int c, d;
   while ( ( c = getchar() ) !=  EOF )
   {
      d = 0;
      if (c == '\b')
      {
          putchar('\\');    
          putchar('b');
          d = 1;
      }
      if (d == 0)
          putchar(c);
   }  
   return 0;
}
将输入放入缓冲区,读取文本,然后在按enter键后输出文本。从逻辑上讲,与制表符或空格不同,退格字符不会因此而打印

getchar()
getch()将输出退格;它不读取标准输入,而是在不等待您按enter键的情况下返回输入。getch()也是conio.h头文件的一部分

getch()
运行程序并不需要它,您可以使用“else”代替:

int d

我希望这个答案在某种程度上对您有所帮助。

您使用的是什么平台?如果完全删除了d变量,代码会简单得多,只需使用“else”而不是“if(d==0)”就可以了——getchar()使用缓冲输入,您的程序从一开始就不会收到来自终端的退格。顺便说一句,不需要使用额外的变量d,您只需将
if(d==0)
替换为
else
int d
if(d == 0)