如何在C中的varargs列表中的每个参数上运行一个函数

时间:2010-09-18 16:44:25

标签: mysql c variadic-functions

我希望在vararg列表的每个参数上调用mysql_real_escape,然后将其传递给vsprintf以包含到SQL字符串中,无论如何我可以轻松地执行此操作吗? 似乎我错过了准备好的陈述,但这似乎无论如何都是有用的。

1 个答案:

答案 0 :(得分:3)

致电va_start()(和va_end())两次。

第一次在va_arg()内部的循环中测试(和更改)每个参数;
以及下一次vsprintf

/* check args */
va_start(val, parm);
while (MORE_ARGUMENTS) {
    arg = va_arg(val, char*);
    /* mysql_real_escape(arg); */
}
va_end(val);

/* print */
va_start(val, parm);
vsprintf(buf, FORMAT_STRING, val);
va_end(val);