我想知道是否有一种方法可以在不需要太多代码行的情况下将文件写入并输出到屏幕上。
我知道如何输出到控制台和如何输出到文件,但它不是一个或另一个,但我想结合两者,但这样我就不必重复fprintf(stdout,uu)一次输出到文件,一次输出到控制台。
我在c工作。
提前谢谢。
编辑:虽然我也想知道如何在命令行中执行,但我认为在代码和命令行中显示它很重要。只是为了展示两种可能的解决方案。它也应该独立于任何特定的操作系统。。。看起来不像是tee。

最佳答案

你可以这样做:

#include <stdio.h>
#include <stdarg.h>


void send_string(FILE *fd, char *fmt, ...)
{
    va_list args_fd, args_stdout;

    va_start(args_fd, fmt);
    va_start(args_stdout, fmt);

    vfprintf(fd, fmt, args_fd);
    vfprintf(stdout, fmt, args_stdout);

    fflush(fd);
    fflush(stdout);

    va_end(args_fd);
    va_end(args_stdout);
}

int main()
{
    FILE *fp = fopen("out.txt", "w");

    send_string(fp, "hello, ");
    send_string(fp, "world %d times!\n", 42);

    fclose(fp);

    return 0;
}

10-04 12:43