2

我希望以下代码的输出为

-|-2-|-

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

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

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

3 回答 3

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;
}
于 2013-10-07T08:04:55.697 回答
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;
}
于 2013-10-07T08:07:30.097 回答
3

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

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

这被过度简化了,但这基本上就是为什么\b不删除换行符。

于 2013-10-07T08:18:19.640 回答