如何使用\ b删除换行符

时间:2013-10-07 07:58:33

标签: c++ c

我希望以下代码的输出为

  

- | -2- | -

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

#include<stdio.h>
#include<conio.h>

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

3 个答案:

答案 0 :(得分:4)

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

#include<stdio.h>

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;
}

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:3)

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

#include<stdio.h>


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;
}