最近我想实现一个printf
包装器。一些搜索后,我发现了vprintf
有利于这方面的需要:在C中带有可变参数的函数的包装器
void my_printf(const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
vprintf(fmt, args);
va_end(args);
}
但它是可以实现的printf
或可变参数,而不是va_list
任何其他类似的功能,例如一个包装?
(我的意思是,如果他们不提供什么v
版本?)
由于一些评论者没有完全抓住了我的想法,我最好阐述它。
假设您有一个普通的printf
函数,就像在C库中一样。
有人给你一个fmt
字符串"%d %u %f"
和相应的输入。
现在你想写一个类似于printf
的函数,但是所有的%f
都被%.2f
所取代。
当然你也可以用两个语句来完成这个任务:
replace(fmt, "%f", "%.2f");
printf(fmt, inputs);
但是如果你使用这个功能很多次,也许你想有一个包装,以节省一些时间。
当然,宏可以完成这个任务。但是,它可能没有一个宏,如:
void myprintf(fmt, ...)
{
replace(fmt, "%f", "%.2f");
printf(fmt, inputs);
}
这里的问题是,你不知道如何与参数的myprintf
...
饲料内printf
。
希望澄清。
我不明白你真正想要什么。你是否想要变量参数而不必使用'va_list'? – Pablo