2012-04-10 11 views
1

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

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

すぐには分かりませんが、これはうまくいかないようですが、代替方法がありますか?

答えて

0

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

私はすでにこれをC#で行い、コードhereを掲示しました。おそらく私のコードは、Cでカスタムバージョンを書くためのいくつかのアイデアを提供します。

0

sscanfで行うことはできません。ループする必要があります。

0

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

使用するセパレータを使用して入力を解析する方法があります。関数substrとposを見て、これを行う方法のヒントを探してください。

関連する問題