在C中使用printf时我不知道运行时有多少个参数

时间:2012-11-15 19:10:51

标签: c variables runtime arguments printf

我遇到的情况是我试图打印由Lua中的用户格式化的信息并通过注册函数发送给我。我从客户那里得到的是格式字符串,参数数量,以及每个参数作为数字。在调用此函数之前,我不知道用户将拥有多少个参数。我通过查询lua系统得到它们。

如何在运行时使用格式字符串和数字列表调用printf?我可以在运行时为数字值分配一个数组,但是printf期望va_list不是参数的数字数组。

我可以根据参数的数量获得大量'if'语句,但我一直在寻找一种更流畅的方式。

有什么想法吗?

2 个答案:

答案 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");

如果我误解了你的问题,请纠正我。