probleme mit der string bearbeitung
-
Hallo,
habe schon wieder ein Problem an dem ich längere Zeit sitze. Ich möchte aus einer Textdatei Daten auslesen, und diese dann in eine andere Textdatei schreiben.
quelle.txt
asdf
asdf
asdf
1 20
2 23
3 34
4 99ziel.txt
20
23
34
991. ich habe versucht das ganze zeilenweise einzulesen. das problem ist aber, dass die zeilenenden nur durch ein CR gekennzeichnet sind. somit liest fgets() über die erste zeile hinweg und liest teile der 2. zeile auch ein. kann ich dieses CR return einlesen und durch ein CR und LF ersetzen oder so?
2. auf eine bestimmte Zeile springen. Wie ist es möglich zum beispiel immer auf eine bestimmte Zeile zu springen? wenn ich das obige problem gelöst habe, kann ich natürlich mit einer kleinen schleife und fgets immer die unbenötigten zeilen einlesen und unbearbeitet lassen.
3. sollte ich 1. gelöst haben, kann ich dann zeile für zeile mit fscanf einlesen und nur das zweite argument in das ziel schreiben. aber wie funktioniert das wenn 1. nicht gelöst wird??
also letztendlich dreht sich alles um 1. ich habe versucht nach diesem CR zu suchen, aber dies scheint nicht zu funktionieren. ich denke einer von euch kennt die lösung für mein problem.
besten dank im voraus,
jopperl
-
1.) das problem mit der zeilenendenmarkierung musst du entweder ausserhalb des programmes loesen oder du musst dir fgets() neu schreiben
2.) geht nicht. du musst alle vorhergehenden zeilen lesen, auch wenn du sie nicht brauchst.
3.) wenn du fgets() benutzt, benutze sscanf(). wenn du kein fgets() benutzt, dann benutze fscanf().
CR ist doch Apple codierung, nicht?
-
1. gelöst, wenn auch über umwege:
habe einfach die datei im binärmodus geöffnet zeichen für zeichen gelesen, und überprüft ob ein das zeichen den wert 13d hat. wenn ja dann statt dem zeichen 13d und 10d in die neue datei schreiben.diese lösung erfordert zwar eine temporäre datei, aber sie funktioniert einwandfrei.
2. ist wohl so, aber wird hoffentlich keine probleme mit sich bringen.
3. verstehe ich nicht.
aber besten dank für die antwort.