質問

次のことを想像してください:

scanf()を使用して文字列を読み取りますが、必要なのは文字列内の少数のデータポイントのみです。

適切なデータが存在するかどうかを確認する機能を失うことなく、無関係な情報を破棄する簡単な方法はありますか?

例:

const char* store = "Get: 15 beer 30 coke\n";
const char* dealer= "Get: 8 heroine 5 coke\n";
const char* scream= "Get: f* beer 10 coke\n";

最初の文字列を受け入れたいが、ビールはヤッキーだからビールについては忘れたい。 2番目と3番目の文字列は、明らかに7/11に適したリストではないため、拒否します。

だから私は次の構成について考えていました:

char* bId = new char[16];
char* cId = new char[16];
int cokes;
sscanf([string here], "Get: %d %s %d %s\n", [don't care], bId, &cokes, cId);

この方法でフォーマットのチェックを続けますが、コンパイラを駄目にしない[気にしない]ために何を入れますか?

もちろん、後で使用しない変数を作成することもできますが、それはこの質問のポイントではありません。また、左側と右側を別々に確認することは、ここで探していない明らかな解決策です。

では、気にせずにscanfや友人の文字列の型を確認する方法はありますか?

役に立ちましたか?

解決

%の後に割り当て抑制文字として*を使用します

例:

  sscanf([string here], "Get: %*d %s %d %s\n", bId, &cokes, cId);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top