不用是\b还是\b\n都不会删除掉最后的*号,只是楼主使用的是VC6.0编译器,会在程序结束时默认调用system("pause..");这句话,打印一下Press any……这句话,导致了最后的*号被P覆盖了,看着好像删除了似的。
C语言的转义字符如下:
\b 退格(BS) ,将当前位置移到前一列
\n 换行(LF) ,将当前位置移到下一行开头
\r 回车(CR) ,将当前位置移到本行开头
所有的转义字符都只是移动当前的光标位置,即下一次打印的位置而已。
1、在printf("\b\n");之前,打印如下_表示当前光标位置
2*2*5*_
2、当执行了\b之后,光标位置移动到了*号的下面
2*2*5_*(这里面没有办法在*号下面加_,所以*放在了_后面)
3、当执行了\n之后,光标位置移动到了第二行的开始
2*2*5*
_
这个时候程序结束了,打印了一下Press any……这句话,从光标位置打印
2*2*5*
Press any……
但是如果没有\n的话,执行完了第2步,光标位置在*号的位置上,程序结束了,打印了一下Press any……这句话,P将*号替换了,好像b被删除了,其实只是被替换了而已
\b 的意思不是 删除
而是将当前 "光标"位置后退一格
你可以:
printf("\b \n");
试试 \b与 \n之间有空格
你没有把*覆盖,在\b后加个空格。