Konfigurationsdatei lesen
-
Hallo!
Ich bräuchte Hilfe beim Einlesen einer Datei.
Ich habe eine Datei die zeilenweise eingelesen werden soll (Leerzeichen sollen ignoriert werden).Die Datei sieht folgendermaßen aus:
plus 105 50
minus 700 123
mult 5Die Ausgaben dürfen nur erfolgen wenn die Eingaben gültig sind. Kann mir bitte jemand helfen ? Ich habe bereits eine Funktion welche überprüft ob das File existiert soweit funktionierts mal, das einlesen und ausgeben will allerdings nicht so funktionieren wie ich will.
Mfg
-
Nun ja: Du könntest erst ein Wort einlesen (mit
scanf()
).
Abhängig vom Inhalt des Worts liest Du dann ein oder zwei Zahlen ein.Das ist nicht schwer. Die Dokumentation zu
scanf()
musst Du halt bemühen.
-
hi aber scanf kann doch nicht funktionieren da die datei dann doch fest formatiert sein müsste oder ? lg
-
Lies jeweils eine Zeile mit fgets und separiere die Worte aus dem Zeilenstring mit sscanf und baue dann die Logik auf.
-
hi ok danke erstmal ich bin nun soweit
while(fgets(line, 60 , fp)) { strcpy(line, data); line[strlen(line) - 1] = '\0'; counter++; }
Gibt es eine Möglichkeit eventuelle Leerzeichen zu ignorieren mit einer if ?
-
tfb23 schrieb:
Gibt es eine Möglichkeit eventuelle Leerzeichen zu ignorieren mit einer if ?
Ja, aber wozu? Das bringt dich doch nicht näher an die Lösung deines Problems (eine gute Lösung haben Furble Wurble und Wutz beide beschrieben). Im Gegenteil, aus
plus 105 50
würde
plus10550
Toll! Und weiter?
while(fgets(line, 60 , fp)) { strcpy(line, data); line[strlen(line) - 1] = '\0'; counter++; }
Das sieht komisch aus. Wieso liest du nicht direkt in data? Was macht der counter? Mindestens eine dieser Aktionen macht nicht das, was du willst (oder du willst komische Dinge), aber ohne Kontext kann man mehr nicht sagen.
tfb23 schrieb:
hi aber scanf kann doch nicht funktionieren da die datei dann doch fest formatiert sein müsste oder ? lg
Lies Furble Wurbles Beitrag genau!
Furble Wurble schrieb:
Abhängig vom Inhalt des Worts liest Du dann ein oder zwei Zahlen ein.
-
SeppJ schrieb:
while(fgets(line, 60 , fp)) { strcpy(line, data);
Wieso komisch? Das ist direkt falsch, da falsch herum kopiert wird.
-
Wutz schrieb:
SeppJ schrieb:
while(fgets(line, 60 , fp)) { strcpy(line, data);
Wieso komisch? Das ist direkt falsch, da falsch herum kopiert wird.
Stimmt, das auch noch, darauf habe ich nicht einmal geachtet. Aber es untermauert noch, dass der Threadersteller hier bloß ein bisschen Code ins Forum geschmiert hat, nicht einmal ausprobiert hat er das.