如何打印" \ r"到一个文件

时间:2016-12-05 07:46:23

标签: c printf carriage-return

我想在程序中显示进度条,所以我添加了

#include <stdio.h>
#include <unistd.h>

int main() {
    puts("begin");
    for (int i = 0; i < 100; i++) {
        printf("%d%% finished.\r", i);
        fflush(stdout);
        usleep(100000);
    }
    puts("end");
}

当它输出到stdout时,它很好地显示了一条指示当前进度的线。

但是,如果我将其输出定向到文件,那么printf("%d%% finished.\r", i);的所有行都将丢失。

是否可以将所有行保留在文件中?

1 个答案:

答案 0 :(得分:1)

输出文件中不太可能缺少这些行,但是有可能将文件复制到终端的速度很快,以至于每行都会覆盖前一行而没有机会让你看到它。与您的程序不同,cat不会在行之间暂停。如果最后一行至少与前一行一样长,那么最后一行最后一行是可见的。

使用od -x以十六进制转储文件以检查实际文件内容。