如何使用' \ r'重定向标准输出印在同一条线上?

时间:2017-12-05 17:37:39

标签: c stdout carriage-return

检查下方使用字符FirebaseMessaging.getInstance().subscribeToTopic("Cat"); //in java code

的代码段
\r

控制台上此程序的输出只有一行:

#include <stdio.h>
#include <unistd.h>
int main() {
    for(int i=1; i<=100; i++) {
        printf("%d%%\r", i);
        fflush(stdout);
        usleep(1e4);
    }
    printf("\n");
    return 0;
}

但是,如果输出重定向到文件$ ./main 100% ,则该文件有100行:

./main > main.log

问题

如何仅将最后一行输出保留到日志文件中?

1 个答案:

答案 0 :(得分:1)

我假设这是一个较大程序的一部分,其中“百分比”可能是也可能不是100%(否则,你可以立即100%打印)。 因此,您可以使用isatty检查输出是否转到终端。如果没有,请打印“最后一个百分比”值:

required_for_step?