我想要一个帮助函数
我已经掌握了关于时间的部分,也掌握了文件写入的部分。然而,问题在于
让我编辑一下,加入更多信息。
我有一个返回形式为“2014-02-03 16:33:00”的字符串的const char * now()函数。我想要像这样传递另一个格式字符串。这两个语句应该是等价的:
我知道
log
,它基本上执行以下操作:log(file, "array has %d elements\n", 10);
// writes "2014-02-03 16:33:00 - array has 10 elements" to &file
我已经掌握了关于时间的部分,也掌握了文件写入的部分。然而,问题在于
log
的方法签名本身——我应该放什么?这里说printf
声明以...
关键字结尾,但是我该如何在我的函数中使用它呢?void log(FILE *f, const char * format, ...) // how would I pass ... to fprintf?
让我编辑一下,加入更多信息。
我有一个返回形式为“2014-02-03 16:33:00”的字符串的const char * now()函数。我想要像这样传递另一个格式字符串。这两个语句应该是等价的:
log(file, "array has %d elements\n", 10);
fprintf(file, "%s - array has %d elements\n", now(), 10);
我知道
vfprintf
允许我传递一个va_list
,但是我该如何将now()
作为第一个参数,在所有其他参数之前?
va_start
是一个宏,而不是函数。第二个参数是函数定义中在,
之前的参数名称。在示例http://en.cppreference.com/w/cpp/utility/variadic/va_start中,该参数恰好是`int count。
va_start()`不会查看其第二个参数的值,它只需要其名称以知道从哪里开始扫描。 - Keith Thompson