1

「asdf + lghd + ewre + fdsf + ...」のような長さの異なる文字列があります。このことから、「%s + %s + %s + ...」に似た sscanf 関数で使用するためのテンプレートもあります。これらは両方とも可変長であるため、値が格納される sscanf の追加の引数を文字列の動的配列に置き換えることは可能ですか? 例えば:

char *test = "adfe + asdf + fghe + jklo";
char *template = "%s + %s + %s + %s";
char destination[4][4];
sscanf(test, template, destination);

一見するとうまくいかないように見えるので、これを行う別の方法はありますか?

4

3 に答える 3

0

あなたがやろうとしていることは、 では不可能sscanfです。ループする必要があります。

于 2012-04-10T00:38:38.833 に答える
0

いいえ、sscanf、'C' のすべての xxxxxf 関数と同様に、引数リストに変数の数を指定することで機能します。4 つの文字列 (4 %s) を探している場合、関数は文字配列である 4 つの引数を想定しています。あなたの例では、4 つの文字配列の配列である単一の引数を提供しています。

機能する1つの方法は、使用しているセパレーターを使用して入力を解析することです。これを行う方法のヒントについては、関数 substr と pos を参照してください。

于 2012-04-10T00:39:18.620 に答える
0

sscanf()はこれをサポートしていませんが、独自のバージョンの scanf を作成できます。

私はすでにこれを C# で行っており、コードをここに投稿しました。おそらく、私のコードから、C でカスタム バージョンを作成するためのアイデアが得られるでしょう。

于 2012-04-10T00:41:36.273 に答える