我想写一个函数来替换 fprintf
int fprintf ( FILE * stream, const char * format, ... );
我不确定如何定义这样的函数,因为在格式参数之后,此函数采用可变数量的参数。具体来说,它至少需要与格式中指定的一样多的附加参数。
更新 我找到了有关该主题的资源 ( http://publications.gbdirect.co.uk/c_book/chapter9/stdarg.html ),但该示例似乎无法在我使用的操作系统 Linux 下编译。
一个仅调用 fprintf 的 fprintf 替换示例会很有帮助。
这不是家庭作业。我只是一个初学者,想在空闲时间学习如何编程。谢谢!
最佳答案
而不是调用 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;
}
在标准库中,每个接受可变参数 (...
) 的函数也有一个 v
。采用 va_list
的同一函数的版本范围。由于您无法构造要传递给 ...
的参数动态地,你需要使用 v
传递可变参数的变体。
关于c - 编写一个带有可变数量参数的函数的替换(c 编程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1854441/