Als Schulaufgabe habe ich die Aufgabe, ein Programm zu schreiben, das eine beliebige Textdatei öffnet und eine Reihe von Operationen mit dem Text durchführt. Der Text muss über eine verknüpfte Liste geladen werden, d.h. ein Array von Structs, das den Char-Zeiger und den Zeiger auf die nächste Struct enthält. Eine Zeile pro struct.
Aber ich habe Probleme, die Datei tatsächlich zu laden. Es scheint, dass der Speicher, der zum Laden des Textes benötigt wird, zugewiesen werden muss, bevor ich den Text tatsächlich lese. Daher muss ich die Datei mehrmals öffnen. Einmal, um die Anzahl der Zeilen zu zählen, dann zweimal pro Zeile; einmal, um die Zeichen in der Zeile zu zählen, dann einmal, um sie zu lesen. Es erscheint absurd, eine Datei Hunderte von Malen zu öffnen, nur um sie in den Speicher zu lesen.
Offensichtlich gibt es bessere Methoden, ich kenne sie nur nicht :-)
Beispiele
- Kann der Punkt, von dem aus
fgetc
kann ein Zeichen verschoben werden, ohne die Datei erneut zu öffnen? - Kann die Anzahl der Zeilen oder Zeichen in einer Datei überprüft werden, bevor sie "geöffnet" wird?
- Kann ich irgendwie eine Zeile oder einen String aus einer Datei lesen und im Speicher speichern, ohne eine feste Anzahl von Bytes zuzuweisen?
- usw.