如何使用\ b删除换行符

我希望以下代码的输出为

– | -2 | –

(当我输入key的值为2时)。 我知道\ b只是将光标移动到1个空格,但为什么在使用换行符输入key的值后它无法移回一个空格。 是否可以在使用换行符之后使用转义字符\ b。

#include #include int main() { int key; printf("Enter value of key: )" printf("-|-"); scanf("%d",&key); printf("\b-|-"); return 0; } 

您用作输出设备的终端没有任何文本行的概念:它所知道的是一个单元格网格,每个单元格都可以由一个字符填充。 其中一个单元格位置是当前单元格。

终端将BS字符解释为将当前单元格向左移动一列的指令。 但是,如果您已经在第一列,会发生什么? 终端不知道前一行的结束位置,因此无法返回到行尾。 它可以返回到上面一行的最后一列,并且可能会配置一些终端来执行此操作,但这可能不是您想要的。

这是过分简化,但它基本上是为什么\b不会删除换行符。

这是一个简单的解决方案:

 #include int main() { int key; char output[8] = {'\0'}; printf("Enter value of key: )"; scanf("%d",&key); sprintf(output,"-|-%d-|-",key); printf("%s\r\n",output); return 0; } 

这是实现相同结果的更简单方法:

 #include int main() { int key; char buffer[whatever_size]; printf("Enter value of key: "); scanf("%d",&key); sprintf(buffer,"-|-%d-|-",key); printf("%s\n",buffer); return 0; }