**
C语言退格\b的打印问题
**
以下是几个使用打印\b的简单例子:
1.1使用\b删除已打印出的字符:
//test1.1
#include<stdio.h>
main(){
printf("abcde\b ");//注意到\b后面加了一个空格
}
运行结果如下图
代码注释中特别强调了\b后加了空格,事实上,若\b后不加空格,打印结果如下,与没加\b时打印结果相同:
再次修改代码如下:
//test1.2
#include<stdio.h>
main(){
printf("abcde\b\b\b*");
}
运行结果如下图:
综合上面三个例子我们可以得出,打印\b的作用并不是将之前的字符从屏幕上清除,而是将光标前移一个位置,而仅仅将光标前移并不能将此前的字符清除,除非输出一个空格将其覆盖,这便是程序test1.1所实现的。但在将程序test1.1中\b后的空格删掉后,仅仅是光标前移,而没有将已打印的字符覆盖,所以打印结果并没有显现出\b的作用。程序test1.2的运行结果更证明了这一点,将光标后退三个位置到“c”时再打印出星号,便把”c”换成了星号。
应用上述结论,我们可以做很多有趣的事,例如下面这个例子:
//test2.1
#include<stdio.h>
main(){
int num,price;
printf("U buy apples.\b\b\b\b\b\b\b\b\b\b\b\b");
scanf("%d",&num);
printf("\nThe price is yuan per apple.\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
scanf("%d",&price);
printf("\nThe total cost is %d yuan.",num*price);
}
运行结果如下图:
造成一种填空的感觉,读者可以自己尝试。