frage zu fseek()
-
hi
frage:
Es ist eine textdatei, in der eine unbekannte anzahl an zeilen steht, vorhanden. Außerdem ist die Länge der Zeilen nicht bekannt. Wie kann ich nun per fseek() in die z.b. 4.zeile springen und die gesamte zeile einlesen?Dachte mir folgendes: Die Länge der Zeilen im Mittel ausrechnen und dann immer um diesen Wert in fseek() erhöhen, wobei ich nicht weiß, ob dann nur der gesammte string in der zeile eingelesen wird (was ich will), oder ob nur der string ab dem cursor eingelesen wird , mit fgets().
Bitte um Hilfe
lg
-
equest0r schrieb:
Es ist eine textdatei, in der eine unbekannte anzahl an zeilen steht, vorhanden. Außerdem ist die Länge der Zeilen nicht bekannt. Wie kann ich nun per fseek() in die z.b. 4.zeile springen und die gesamte zeile einlesen?
Gar nicht. Dir bleibt nichts anderes übrig als zeichenweise einzulesen und Newlines zu zählen.
Dachte mir folgendes: Die Länge der Zeilen im Mittel ausrechnen und dann immer um diesen Wert in fseek() erhöhen, wobei ich nicht weiß, ob dann nur der gesammte string in der zeile eingelesen wird (was ich will), oder ob nur der string ab dem cursor eingelesen wird , mit fgets().
Der String wird ab der Dateizeigerposition eingelesen. Das liegt alles schlicht und ergreifen daran, dass die Einteilung in Zeilen physisch überhaupt nicht vorhanden ist, sondern sich aus dem Einstreuen von Newlines in den Bytestrom ergibt. Falls es so eine physische Einteilung geben sollte (gab es früher auf Großrechnern, denk an Lochkarten), ist C sogar so nett, diese wegzuabstrahieren, so dass du wieder einen Zeichenstrom bekommst