一、今天讲解\b的用法,也就能动画演示输出的字符删除的效果。
首先我们引入\b的用法,它表示的是一个退格,但是只是你光标位置的改变,printf("\b");表示光标退回一个格,printf("\b\b");表示退回两个格,但是\b只是退格作用而不是删除,要想删除必须用到空格来掩盖光标所指向的字符,也就是在\b后边加一个空格。
#include <stdio.h>
#include <windows.h>
int main(void)
{
printf("H");
Sleep(500);
printf("e");
Sleep(500);
printf("l");
Sleep(500);
printf("l");
Sleep(500);
printf("o");
Sleep(500);
printf(",");
Sleep(1000);
printf("\b ");
Sleep(1000);
return 0;
}
我们可以看到输出的Hello,最后一个,被空格占了,也就是说\b带个空格是把后边的空格退了一位,于是达到了删除效果,但是还需要注意的是每一次执行完退格操作光标会自动到这一段字符串的末尾,也就是Hello后空格的后边,因此在之后的退格操作中必须带两个\b,printf("\b\b "),让光标退到空格之前,删除前面的字符。
代码如下:
):
#include <stdio.h>
#include <windows.h>
int main(void)
{
printf("H");
Sleep(500);
printf("e");
Sleep(500);
printf("l");
Sleep(500);
printf("l");
Sleep(500);
printf("o");
Sleep(500);
printf(",");
Sleep(1000);
printf("\b ");
Sleep(1000);
printf("\b\b ");
Sleep(1000);
printf("\b\b ");
Sleep(1000);
printf("\b\b ");
Sleep(1000);
printf("\b\b ");
Sleep(1000);
printf("\b\b \b");
Sleep(1000);
return 0;
}
可以看到我们最后是多输出一个退格实际上为了达到效果最后那个\b可以不用写,但是如果还有后续操作,我们必须让光标放到第一行,方便以后的操作所以带一个\b来解决我们之前提到的问题就是光标在那个空格之后,所以最后让光标移动到空格上也就是第一位,就完美完成了删除。