c - 函数printf()打印退格问题

标签 c printf

有两个程序,它们得到不同的结果,但我不明白为什么。 这是第一个:

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/

相关文章:

c - 调整大小(更多)我是否正确解析 float ? (使用 sscanf)

php - 如何在运行前检查 vsprintf 是否具有正确数量的参数

c++ - 关于 printf 参数的问题。 C/C++

c - 在 C 中每行打印双数组的 5 个元素时出现问题

c - 如何在 C 中传递 char 数组并访问它的值

c++ - 如何使用系统调用 write() 输出到文件(写入文件)?

c - 是否有一个 C 预处理器可以消除 #ifdefs 但也可以评估预处理器宏?

c - 指针和二维数组的问题(内存的动态分配)

c++ - libcurl在windows上的静态库

c - 以十进制形式打印大数字