在其中一个模块中,通过套接字接收Json字符串。json字符串具有名为"args“的数组对象。
该数组可以有任意数量的对象,甚至可以是零。每个对象都有类型和值。类型可以是%s或%d。值可以包含字符串或整数,如类型所示。
例如:
args: [ {type: "%d", value: 10}, {type:"%s", value: "abc"}, ...]收到json字符串后,需要调用一个变量参数函数。例如:
cbptr_func("%d%s", 10, "abc");由于每个类型说明符的数量和顺序在json字符串中不是固定的,有没有办法将参数传递给C语言中的函数。
干杯Gnana
发布于 2017-03-05 19:59:57
不,没有实际的方法来实现这一点。您不能在C中为函数创建动态数量的参数。
相反,您可能应该将格式字符串与一个int值数组和一个字符串值数组一起传递。对于您的示例,您可以像这样调用该函数:
cbptr_func("%d%s", (int[]){10}, (const char *[]){"abc"});然后,当你从格式中读取%d时,你从int数组中读取值,当你读取%s时,你从字符串数组中读取值。
如果您的目标是使用printf函数,则必须为每个参数重复调用该函数一次,并在两次调用之间连接结果字符串。
https://stackoverflow.com/questions/42608054
复制相似问题