14.2 Dateien
Häufig wendet man die Dateifunktionen an, ohne sich Gedanken darüber zu machen, was eine Datei eigentlich ist. Im Prinzip können Sie sich eine beliebige Datei als ein riesengroßes char-Array vorstellen. Das char-Array besteht dabei aus einer bestimmten Byte-Folge – unabhängig davon, ob es sich um eine Textdatei, eine ausführbare binäre Datei oder was auch immer handelt. Erst bei der Verarbeitung der Daten bekommen die einzelnen Bytes oder Zeichen eine Bedeutung.
Öffnen Sie in C eine Datei mit einer der dafür vorgesehenen Standardfunktionen wie fopen(), freopen() oder tmpfile(), wird ein Speicherobjekt vom Typ FILE angelegt und initialisiert. Eine erfolgreich geöffnete Datei in C liefert immer einen Zeiger auf ein FILE-Speicherobjekt zurück, das mit einem Stream verbunden ist. Ob hierbei ein Text- oder ein binärer Stream verwendet wird, kann mit einer zusätzlichen Option der Funktionen angegeben werden.
Das FILE-Objekt ist letztendlich ein Strukturtyp, der in der Header-Datei stdio.h deklariert ist. Diese Struktur enthält alle nötigen Informationen der Komponenten, die Sie für die Ein- und Ausgabefunktionen benötigen. Sie beinhaltet u. a.:
-
den Puffer – die Anfangsadresse, den aktuellen Zeiger, die Größe
-
den File-Deskriptor (eine Ganzzahl mit der aktuellen Dateinummer (Handle) der niedrigeren Ebene)
-
die Position des Schreib- oder Lesezeigers
-
die Fehler- und Dateiende-Flags
Wenn Sie eine Datei erfolgreich geöffnet haben, können Sie mithilfe des zurückgegebenen Zeigers auf ein gültiges FILE-Speicherobjekt die Daten des Streams über die Standardfunktionen, die den FILE-Zeiger als Argument erwarten, auslesen und ändern.