2009-12-06 58 views
1

我希望写一个函数来代替fprintf中写它采用可变数量的参数(C编程)

​​

我不知道如何定义一个函数,如函数替换这是因为,在format参数之后,这个函数需要可变数量的参数。具体来说,它至少需要格式中指定的附加参数。

UPDATE我找到了关于该主题的资源(http://publications.gbdirect.co.uk/c_book/chapter9/stdarg.html),但该示例似乎并未在我正在使用的Linux下编译。

fprintf替换fprintf的例子只是调用fprintf会有帮助。

这不是家庭作业。我只是一个试图在闲暇时间学习如何编程的初学者。谢谢!

+1

为什么不编译?你得到什么错误? – 2009-12-06 05:16:08

+0

14:error:expected';',','或')''args'之前 – Charles 2009-12-06 05:20:27

+1

大声笑,你还可以发布你的代码吗? – 2009-12-06 05:20:55

回答

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; 
} 

在标准库,每一个需要可变参数(...)函数还具有v版本,需要一个va_list参数相同功能的。由于您无法构造参数以动态传递给...,因此需要使用v变体传递可变参数。