c - 为什么 printf() 中的命令\r 不起作用?

标签 c string shell terminal printf

我正在尝试更新终端上的文本,而不必再次打印该文本。现在我正在尝试用简单的代码来完成它:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char *argv[]){
    for(int i=0;i<=100;++i){
        printf("\r[%3d%%]",i);
        sleep(1);
    }
    printf("\n");
    return 0;
}

代码实际上什么也不打印,指针在行的开头闪烁。
有人可以帮助我吗?

最佳答案

标准输出流通常是行缓冲的,因此如果您不打印换行符(即 \n),那么输出将保留在缓冲区中。

调用printf后,调用fflush(stdout);。这将刷新标准输出流,以便您可以看到文本。

关于c - 为什么 printf() 中的命令\r 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74722334/

相关文章:

java - Android FFMPEG - 未创建输出文件

c函数充当指针?

c - C 是否适用于命令行和学习之外的任何项目?

javascript - 帮助使用 javascript 中的正则表达式

string - 字符串-match的PowerShell问题

c++ - 在 C++ FAT 文件系统仿真中使用继承委派构造函数

shell脚本ffmpeg在2个作业后停止

c - 无法在头指针指向c的地方创建新节点?

c - 减去 2 个具有度、分和秒的角度

c - 如何清除C中数组的所有元素?