如何将"\ r"打印到文件

bbv*_*van 2 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");
}
Run Code Online (Sandbox Code Playgroud)

当它输出到stdout它时,显示一条指示当前进度的线.

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

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

Som*_*ude 5

当输出重定向到文件时,您无法真正使用这样的格式,因为输出到文件只会向前写入,它永远不会向后写入.

如果您使用的是POSIX系统(如Linux或macOS),那么您可以使用它isatty来检测您是否写入实际终端,并相应地更改输出格式.