c - 编写一个带有可变数量参数的函数的替换(c 编程)

标签 c parameters variadic-functions printf

我想写一个函数来替换 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/

相关文章:

c - 如果计数器超过 malloc 或 calloc 分配的内存怎么办

Chardevice 主设备号释放

c - C语言中struct和array的本质区别

javascript - 获取请求时带有参数的静态资源出现 404 错误

c++ - 菊花链可变参数模板类

c++ - 如何将 const float* const 复制到 float*?

python - 使用方法自动验证函数参数

python - 基方法和子方法签名中的参数数量不一致

c - 如何使用自己的自定义函数(不是 vprintf 等)处理可变参数(通过省略号传递)?

Java 1.7 varargs 函数报告为未检查警告