9

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

で文字列を読み取りますが、文字列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);

このようにして、フォーマットのチェックを続けますが、[don't care] に何を入れれば、コンパイラーは泣き言を言わないでしょうか?

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

では、scanf や友人の文字列の種類を気にせずにチェックする方法はありますか?

4

1 に答える 1