は、すべての桁ワイルドカードの照合にsscanfを使用できますか?例えば
..."12334", "21335", "24335"...
、C文字列の配列を考えると、私は、このワイルドカードは
**33* (where * = any digit 0-9)
が、私はこれを達成するためにsscanf(str, mask, ...)
を使用することができますマスク一致どのように多くのこれらの文字列の知りたいですか?フォーマット"%1d%1d%[3]%[3]%1d"
は私が望む以上に一致するようです(33がない場合)"%1d%1d33%1d"
は、奇妙な動作をしているようですが、一致するエントリはすべて一致するものではありません。私のコードで
コンテキスト:
if (sscanf(array[i], mask, &a1, &a2, &a3) == 3)
3は、ワイルドカードの桁数が一致しています。
戻り値のチェックを含め、完全なコードを表示できますか? sscanf()の最初の引数として 'argv [1]'を使った 'int main()'のプログラムは完璧です。 –
@John Zwinckチェックに使用した行を追加しました。 'mask 'は私が記述した書式です、' a1、a2、a3'は32ビット 'int'です。私は本当に 'sscanf'が私が記述したことを実行できるのか、そして何のフォーマットでなければならないのかという質問だけです。 –
@jeffersonあなたはいくつかの選択肢があります。 1)文字列の最初の出現と2番目の出現があなたの望む場所にあることを確認するためにstrchrを乱用してください。 2)可能なすべての組み合わせに一致するように整数を手作業で作成します。 – Chirality