我希望以下代码的输出为
- | -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;
}
答案 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;
}