有两个程序,它们得到不同的结果,但我不明白为什么。 这是第一个:
int main()
{
printf("12345");
fflush(stdout);
printf("\b\b");
fflush(stdout);
return 0;
}
结果是:123
。
然后是第二个:
int main()
{
printf("12345");
fflush(stdout);
sleep(1);
printf("\b\b");
fflush(stdout);
return 0;
}
但结果是:12345
。
当我期望“123”结果时,为什么 sleep 调用使第二个结果不同? 该代码在 CLion 中运行。 如果重要的话,我的操作系统是 macOS。
最佳答案
根据终端的不同,'\b'
可能会“删除”一个字符或仅将光标向左移动。要获得万无一失的解决方案,请使用:
#include <unistd.h>
#include <stdio.h>
int main(void)
{
printf("12345");
fflush(stdout);
sleep(1);
printf("\b\b \b\b");
fflush(stdout);
}
关于c - 函数printf()打印退格问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52530424/