理解C中的退格(\ b)行为

该程序将其输入复制到其输出,用\b替换TAB( \t\t backspace( \b )。 但是在我的代码中,当我输入退格键时,我无法读取输入字符,因为选项卡不起作用。

在Linux中使用GCC进行编译:

 #include int main(void) { int c=0; while((c=getchar())!=EOF){ if(c=='\t'){ printf("\\t"); if(c=='\b') printf("\\b"); } else putchar(c); } return 0; } 

假如我输入vinay(tab)hunachyal

 Output:vinay\thunachyal 

如果我输入vinay(和1个退格)

 Output:vina 

所以我的查询是为什么vina\b在这种情况下不打印?
是否可以检测\b并打印\b ? 如果不是什么原因

Note:我需要在运行时输入退格键不提供具有\ b的单独文件

退格由shell解释器使用,因此你的程序永远不会看到它,你的代码也会(略微)被破坏,因为错误的括号,没有帮助。

这是一个更正版本:

 #include int main(void) { int c=0; while((c=getchar())!=EOF){ if(c=='\t') printf("\\t"); else if(c=='\b') printf("\\b"); else putchar(c); } putchar('\n'); return 0; } 

它按预期工作:

 $ echo 'vinay\thunachyal\b' | ./escape vinay\thunachyal\b 

如果我没有误解问题,您可以使用“Ctrl-H”发送退格。 当您键入时,使用trojanfoe的更正代码:

 vinay^H 

它将打印:

 vinay\b 

^ H表示’Ctrl-H’,它是ASCII字符#8,它是退格键。