我遇到的情况是我试图打印由Lua中的用户格式化的信息并通过注册函数发送给我。我从客户那里得到的是格式字符串,参数数量,以及每个参数作为数字。在调用此函数之前,我不知道用户将拥有多少个参数。我通过查询lua系统得到它们。
如何在运行时使用格式字符串和数字列表调用printf?我可以在运行时为数字值分配一个数组,但是printf期望va_list不是参数的数字数组。
我可以根据参数的数量获得大量'if'语句,但我一直在寻找一种更流畅的方式。
有什么想法吗?
答案 0 :(得分:1)
如果您只需要打印出值,可以使用for循环遍历所有值并单独打印,只需不用换行。
答案 1 :(得分:0)
我认为在一个循环内重复调用printf,显然会运行“参数个数”次。我的意思是说:
void YourFunction(char *format, int number_of_arguments, int *arguments)
{
for(int index = 0; index < number_of_arguments; index++)
{
printf(format, arguments[index]);
}
}
现在您可以按照自己的方式对其进行格式化,例如通过执行添加换行符,
strcat(format, "\n");
如果我误解了你的问题,请纠正我。