为函数编写替换函数,该函数采用可变数量的参数(c编程)

Cha*_*les 1 c parameters printf variadic-functions

我正在寻找一个替换fprintf的函数

int fprintf ( FILE * stream, const char * format, ... );
Run Code Online (Sandbox Code Playgroud)

我不确定如何定义这样的函数,因为在format参数之后,此函数采用可变数量的参数.具体来说,它至少需要与格式中指定的一样多的附加参数.

更新我发现了一个关于这个主题的资源(http://publications.gbdirect.co.uk/c_book/chapter9/stdarg.html),但是这个例子似乎没有在我正在使用的操作系统Linux下编译.

替换fprintf的一个例子就是调用fprintf会有所帮助.

这不是功课.我只是一个试图学习如何在空闲时间编程的初学者.谢谢!

Gre*_*ill 8

而不是fprintf直接打电话,你需要打电话vfprintf.例如:

#include <stdarg.h>
int myfprintf(FILE *stream, const char *format, ...) {
    va_list args;
    va_start(args, format);
    int r = vfprintf(stream, format, args);
    va_end(args);
    return r;
}
Run Code Online (Sandbox Code Playgroud)

在标准库中,每个采用varargs(...)的函数也都有一个vva_list参数的相同函数的版本.由于无法构造要...动态传递的参数,因此需要使用v变量传递varargs.