Frage

Stellen Sie sich folgendes:

lesen Sie in einem String mit scanf() aber man braucht nur ein paar der Datenpunkte in der Zeichenkette.

Gibt es einen einfachen Weg, um die fremden Informationen wegzuwerfen, ohne die Fähigkeit zu verlieren, zu überprüfen, ob die entsprechenden Daten gibt es, so dass Sie immer noch fehlerhafte Strings ablehnen kann leicht?

Beispiel:

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";

Ich mag die erste Saite, akzeptieren, aber über das Bier vergessen, denn Bier ist yuckie. Ich mag die zweiten und dritte Strings ablehnen, weil sie eindeutig nicht die entsprechenden Listen für die 7/11 sind;

So wurde ich über den folgenden Aufbau denken:

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);

So kann ich das Format Kontrolle behalten würde, aber was würde ich setzen für [egal], die nicht die Compiler jammern machen?

Natürlich konnte ich nur eine Variable Ich mache nicht später verwenden, aber das ist nicht der Sinn dieser Frage. Auch die Überprüfung der linke und rechte Seite getrennt ist eine offensichtliche Lösung ich suche nicht hier.

So

, ist es eine Möglichkeit, nicht zu kümmern, aber immer noch überprüfen Sie die Art von einem Stück Schnur in scanf und Freunden?

War es hilfreich?

Lösung

Verwenden Sie ein * als Zuweisung Unterdrückung Zeichen nach%

Beispiel:

  sscanf([string here], "Get: %*d %s %d %s\n", bId, &cokes, cId);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top