Gespräch mit einer Datei
Bevor man sich mit einer Datei unterhalten kann,
muß man sie bei ihrem Namen rufen.
Das geschieht im C mit der Funktion fopen.
Außerdem muß man der Datei sagen,
wie man sich mit ihr unterhalten will.
Will man die Datei erst einmal neu erzeugen?
Will man nur Daten abfragen, ohne die Daten zu verändern?
Will man nur schreiben?
Will man vielleicht lesen und schreiben?
Soll die Datei byteweise die Information aus dem Speicher übernehmen
oder soll sie als von Menschen lesbarer Text erscheinen?
Dies übergibt man im Modusstring.
Sehen wir uns ein Beispiel an:
FILE *Stream;
Stream=fopen("datei.txt","wt");
In diesem Beispiel öffnen wir eine binäre Datei
ausschließlich zum schreiben.
Sie trägt den Namen "datei.txt".
Was es mit der geheimnisumwitterten Variable Stream vom Typ File* auf sich hat,
wird weiter unten im Text geklärt.
Erstmal zum Modusstring:
Zeichen Bedeutung
r bereits existierende Datei soll nur zum Lesen geöffnet
werden
w Datei soll neu erzeugt und nur zum Schreiben geöffnet
werden. Existiert die Datei bereits, wird sie geleert
a Datei soll für anfügende Schreiboperationen geöffnet
werden. Existiert die Datei noch nicht, wird sie
angelegt
r+ wie r, nur daß auch Schreiboperationen erlaubt sind
w+ wie w, nur daß auch Leseoperationen erlaubt sind
a+ wie a, nur daß auch Leseoperationen erlaubt sind
Zusätzlich zu diesen Zeichen
kann noch ein t oder ein b angefügt werden:
Zeichen Bedeutung
t Von Menschen lesbare Textdatei
b nur maschinenlesbare Binärdatei
Einige Beispiele :
fopen("readme.txt","rt");
// oeffnet Textdatei "readme.txt" zum Lesen
fopen("/home/username/beispiel.dat","w+b");
// legt Binaerdatei zum Schreiben und Lesen neu an
Genau wie im wirklichen Leben werden wir die Datei
im folgenden Gespräch jedoch nicht mehr mit ihrem vollen Namen,
sondern nur noch kurz mit Du anreden,
da diese uns dann ihre volle Aufmerksamkeit bereits gewidmet hat und weiß,
wer gemeint ist.
Diese Kurzanrede ist die Dateivariable.
Eine Dateivariable ist im C vom Typ FILE*.
Die Deklaration kann so aussehen:
FILE *Du;
Du ist jetzt Anrede und Dateivariable.
Man kann auch,
wenn man sich mit mehreren Dateien gleichzeitig unterhalten will,
mehrere Anreden definieren:
FILE *Datei1, *Datei2, *Datei3;
Ist das Gespräch beendet und alles gesagt und getan,
muß man sich nett wieder verabschieden, und zwar mit fclose.
Der Aufruf kann dann so aussehen:
fclose(Du);
Hat man mit mehreren Dateien geredet, muß man natürlich
auch alle wieder verabschieden:
fclose(Datei1);
...
fclose(Datei2);
...
fclose(Datei3);
Autor: Ulrich Kritzner