理解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,它是退格键。