在下面的c语言中,退格\b和换行\n同时使用时,为什么退格就无效了啊,不用换行时,退格有效。

#include"stdio.h"main(){inti,t,x,a[10];for(i=0;i<10;i++){printf("请输入第%d个数\n",i+1);sca... #include"stdio.h"
main()
{
int i,t,x,a[10];
for(i=0;i<10;i++)
{printf("请输入第%d个数\n",i+1);
scanf("%d",&a[i]);}
do
{
t=0;
for(i=0;i<9;i++)
{if(a[i]<a[i+1]) {x=a[i];a[i]=a[i+1];a[i+1]=x;t++;}}
}while(t!=0);
for(i=0;i<10;i++)
printf("%d>",a[i]);
printf("\b");
printf("\n");
}
展开
 我来答
霜之咏叹调99
2011-08-15 · TA获得超过233个赞
知道小有建树答主
回答量:146
采纳率:0%
帮助的人:48.8万
展开全部
不用换行时,退格有效。这是因为你退格之后,press any key to continue把>覆盖了,所以你看起来是删除了最后一个>
退格不代表删除;
#include"stdio.h"
main()
{
int i,t,x,a[10];
for(i=0;i<10;i++)
{printf("请输入第%d个数\n",i+1);
scanf("%d",&a[i]);}
do
{
t=0;
for(i=0;i<9;i++)
{
if(a[i]<a[i+1])
{
x=a[i];
a[i]=a[i+1];
a[i+1]=x;
t++;
}
}
}
while(t!=0);
for(i=0;i<10;i++)
printf("%d>",a[i]);
printf("\b ");
printf("\n");
}
printf("\b ");在\b后面加个空格吧,空格把>覆盖,相当于把最后一个>删除了;
另外,你的程序不严谨,要是你输入的数中有相同大小的,你也用>连接?
追问
谢谢指教,关于覆盖的我不怎么懂,你能解释下嘛,为什么用两次退格和空格就能覆盖两个,不用换行时退格又是有效的?把后面语句改成这样就好了

printf("%d>=",a[i]);
printf("\b\b ");
printf("\n");
}
追答
这里聊不方便,加qq吧
along8112
2019-01-04
知道答主
回答量:1
采纳率:0%
帮助的人:794
展开全部

这个问题提出的时间非常久了,原提问者估计都不再看这里的回答了。但我作为初学者也刚刚遇到这样的疑惑,经@霜之咏叹调99 回答的提点,自己总结出来原因如下:

  1. @霜之咏叹调99说:退格不代表删除,确实是这样。\b是让光标退回一格,不是删除前一个字符,事实上前一个字符仍然存在的。我们在程序最后一行执行\b为什么能删除一个字符呢?是因为程序执行结束后,显示界面会输出”press any key to continue“,这行字就会覆盖光标后面的字符,造成了\b删除上一个字符的假象,实际上是”光标倒一格,再输出新字符覆盖原字符“的过程。如果在语句“printf("\b");”后加"while(1);"让程序死循环,界面不出现“press any key to continue”就可以直观的看到最后一个字符存在,光标是在最后一个字符前面。

  2. 若是\b\n这样,执行结果是光标先倒回一格,然后回车换行。那么前一行的最后一个字符还是存在的,想用\b删除最后一个字符不成功。

  3. 若要用\b删除字符且换行(或后面不再输出任何内容,包括“press any key to continue”),必须得在\b后输出一个新字符,若不需要显示任何字符就用空格代替,即用空格替换原字符。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
草柏渡
2011-08-14 · TA获得超过401个赞
知道答主
回答量:83
采纳率:0%
帮助的人:66.9万
展开全部
确实无效了。具体理由我也不懂。把退格输出放入for循环里可知,最后一次(即输出换行前的一个退格语句是无效的)。我估计是转义字符的间的规定吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
phoebecxy0728
2011-08-16
知道答主
回答量:73
采纳率:0%
帮助的人:27.8万
展开全部
楼下正解!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式