Textdatei Parsen mit Hilfe von sscanf...
-
Hi,
ich möchte eine Textdatei Parsen, die das folgende Format hat:
TITEL1: DASHIERWILLICH1%0aTITEL2: DASHIERWILLICH2%0aTITEL3: DASHIERWILLICH3%0aTITEL4: DASHIERWILLICH4%0a usw.
Man hat also den Titel mit Doppelpunkt und einer Leertaste. Danach folgt das, was ich speichern will. Anschließend kommt %0a und der nächste titel.
Die jeweiligen DASHIERWILLICHi (i=1..6) will ich auslesen und in variablen speichern.Mein Code dafür sieht momentan so aus:
char file_content[555]; FILE *text_file=fopen("/tmp/test.txt","r"); if (text_file) { fgets(text_file, 555, file_content); sscanf(text_file, "TITEL1: %s\%0a", daswillich1); sscanf(text_file, "TITEL2: %s\%0a ", daswillich2); sscanf(text_file, "TITEL3: %s\%0a", daswillich3); ... ... ... fclose(text_file); }
Das funzt aber leider nicht
Wahrscheinlich kann man dieses %0a nicht so angeben als String, bis wohin er parsen soll. Hab aber keine Ahnung wie ich das anders machen soll.
Hoffenlich kann mir hier jemand helfen...
Achja, die strings DASWILLICH haben leider Variable Länge, sonst wär das ja einfach...
-
Hmm, hab mir überlegt, er kann TITEL1 usw auch mit rausholen, d.h. ich muss nur jeweils ausschneiden was zwischen %0a steht und dass jeweils in die passende Variable speichern.
Im resultierenden char kann dann also sowas stehen:
TITEL1: DASHIERWILLICH1
-
wenn du von "%0a" weggehen würdest, und dafür ein '\n' benutzen würdest, könnteste ganz einfach mit std::cin.getline arbeiten
-
Problem war, dass ich keinen einfluss auf die Erstellung des Textfiles hatte. Mittlerweile hab ichs so hinbekommen, dass ich vorher das file sed'e und %0a durch \n ersetze und schon klappts einwandfrei
Danke für den tipp