繁体   English   中英

当我直到运行时不知道有多少参数时,在 C 中使用 printf

[英]Using printf in C when I don't know how many arguments until runtime

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

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

根据参数的数量,我可以有大量的“if”语句,但我正在寻找一种更巧妙的方法。

有任何想法吗?

如果您只需要打印出值,您可以使用 for 循环遍历所有值并单独打印它们,无需换行。

我认为您可以只使用一个打印 %s 的 printf,并作为参数传递您将返回 char* 的函数。 该函数将接受参数数组作为参数。 在函数内部,您可以使用 sprintf 将所有参数格式化为“字符串”,并在最后返回创建的“字符串”。

我认为在循环中重复调用 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");

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM