Parsen von Strings
-
Hallo!
Ich möchte einen Eingabestring nach einen bestimmten Muster parsen. Habe dazu im Internet die Funktion:
sscanf()
gefunden.
Der String sieht folgendermaßen aus: "Start: 23 43 Stopp: 12 14 OWL: no"
Soweit ich das verstanden habe, gebe ich an wie das Format sein soll, bei mir kommt jedoch immer "segmentation fault 11" raus:
char *bla = "Start: 23 43 Stopp: 12 14 OWL: no"; char *hello; int aaa; int zahl; char *stopp; int num1, num2; char *be; char *answ; sscanf(bla, "%s %d %d %s %s %d %d %s %s", hello, &aaa, &zahl, stopp, &num1, &num2, be, answ);
Was mache ich denn falsch??
Und ich hätte noch eine Frage:
- ist es denn möglich, statt %s - also string zu erwarten genau anzugeben, dass man den string "Stopp:" erwartet, und an dieser stelle dann die Eingabe spaltet.
- weil ich brauche nur die zahlen, und so muss ich auch "stopp", "start" und die anderen strings speichern.
-
Das sollte:
sscanf(bla, "%s %d %d %s %d %d %s %s", hello, &aaa, &zahl, stopp, &num1, &num2, be, answ);
heißen, löst aber das problem noch nicht
-
Fang mal damit an, Speicher für Deine Strings zur Verfügung zu stellen:
char hello[20]; char stopp[20]; ...
-
Hallo,
lies mal die Antwort von "Furble Wurble" in Probleme beim Öffnen eines Datenstroms.
-
Hallo
Vielen Dank für die Hilfe.
Th69 schrieb:
Hallo,
lies mal die Antwort von "Furble Wurble" in Probleme beim Öffnen eines Datenstroms.
Das hat mir auf jeden Fall weitergeholfen, auch mit dem stern-operator.
Ich bin sehr neu in C und deswegen habe ich noch Anfangsprobleme.
-
Ich habe jetzt aber auch ein problem mit floats einlesen:
char *bla = "Start: 23 43 Stopp: 12 14 OWL: no 14.3";float overlap; int start_one, start_two, end_one, end_two; sscanf(bla, "%*s %d %d %*s %d %d %*s %*s %f", &start_one, &start_two, &end_one, &end_two, &overlap);
Bei dem Overlap steht dann einfach nur 0.000000 :S
-
Du hast die Hilfe, die dir gegeben wurde, verändert, offensichtlich ohne zu wissen du tust, und wunderst dich, dass es nicht funktioniert?
Was bedeudet %* im Formatstring von *scanf?
Wenn du den Rückgabewert von sscanf auswerten würdest, wäre dir sicher was aufgefallen.
-
Sorry, aber ich sehe da jetzt kein Problem: http://ideone.com/MiU8rq