最近我想實現一個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