2017-03-05 4 views
0

モジュールの1つでは、Json文字列がソケットを介して受信されます。 json文字列の配列オブジェクトは "args"です。C言語での可変引数関数呼び出しのJson文字列の解析

アレイは、偶数ゼロの任意の数のオブジェクトを持つことができます。各オブジェクトには型と値があります。タイプは%sまたは%dです。 valueは、型によって示される文字列または整数を持つことができます。

例えば:

args: [ {type: "%d", value: 10}, {type:"%s", value: "abc"}, ...] 

JSON文字列を受け取った後、可変引数関数が呼び出される必要があります。 例:各型指定子の数以来

cbptr_func("%d%s", 10, "abc"); 

とその順序は、JSON文字列に固定されていない、C言語の関数に引数を渡す方法はあります。

乾杯 Gnana

答えて

0

いいえ、説明した方法でこれを達成するための現実的な方法はありません。 Cの関数への動的な引数の数を作成することはできません。

代わりに、おそらくフォーマット文字列をint値の配列と文字列値の配列と一緒に渡すべきです。あなたは形式から%dを読んだとき、あなたがint配列から値を読んで、あなたは%sを読んだとき、あなたが文字列オフ値を読み取るその後

cbptr_func("%d%s", (int[]){10}, (const char *[]){"abc"}); 

:あなたたとえば次のような関数を呼び出したいですアレイ。

あなたの目的がprintf関数を使用することであるならば、各引数に対して1回ずつ繰り返し呼び出して、結果の文字列を呼び出し間で連結する必要があります。

関連する問題