Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Eine Einführung in die Programmiersprache C und ... - C /C++ Ecke
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />
21 Datei I/O<br />
Das Arbeiten mit Dateien läuft gr<strong>und</strong>sätzlich über FILE-Objekte. Sämtliche Dateifunktionen benötigen<br />
e<strong>in</strong>en Zeiger auf e<strong>in</strong> solches Objekt. <strong>E<strong>in</strong>e</strong> vollständige Beschreibung aller Dateifunktionen<br />
bef<strong>in</strong>det sich im Kapitel 19.5.1. <strong>E<strong>in</strong>e</strong> Datei wird <strong>in</strong> C gr<strong>und</strong>sätzlich als e<strong>in</strong>e Folge von Bytes betrachtet.<br />
Bevor mit e<strong>in</strong>er Datei gearbeitet werden kann, muss mit fopen() e<strong>in</strong>e neues, mit <strong>die</strong>ser Datei<br />
verknüpftes FILE-Objekt erzeugt werden. fopen() liefert e<strong>in</strong>en Zeiger auf das FILE-Objekt zurück,<br />
wenn das Öffnen der Datei erfolgreich war, <strong>und</strong> NULL wenn e<strong>in</strong> Fehler aufgetreten ist. Nach<br />
dem Öffnen e<strong>in</strong>er Datei muss immer auf Fehler geprüft werden bevor mit ihr gearbeitet wird.<br />
#<strong>in</strong>clude <br />
FILE *DieDatei;<br />
DieDatei = fopen("c:\\Test.txt", "w");<br />
if (DieDatei == NULL) {<br />
pr<strong>in</strong>tf("Fehler, konnte <strong>die</strong> Datei nicht oeffnen!\n");<br />
}<br />
Das erste Argument der Funktion fopen() ist der Name der zu öffnenden Datei, das zweite <strong>die</strong><br />
Zugriffsart auf <strong>die</strong> Datei:<br />
"r" Textdatei zum lesen öffnen<br />
"w" Textdatei zum Schreiben erzeugen; gegebenenfalls alten Inhalt wegwerfen<br />
"a" anfügen; Textdatei zum Schreiben am Dateiende öffnen oder erzeugen<br />
"r+" Textdatei zum Ändern öffnen (Lesen <strong>und</strong> Schreiben)<br />
"w+" Textdatei zum Ändern erzeugen; gegebenenfalls alten Inhalt wegwerfen<br />
"a+" anfügen; Textdatei zum Ändern öffnen oder erzeugen, Schreiben am Ende<br />
Dateien können im B<strong>in</strong>är oder Textformat geöffnet werden, bei UNIX Betriebssystemen hat das<br />
Format ke<strong>in</strong>e Bedeutung, bei Dos <strong>und</strong> W<strong>in</strong>dows wird im Textmodus der Zeilenvorschub ('\n') beim<br />
Schreiben <strong>in</strong> <strong>die</strong> Sequenz von Zeilenvorschub <strong>und</strong> Wagenrücklauf ('\n' '\r') umgewandelt, <strong>und</strong> beim<br />
Lesen umgekehrt <strong>die</strong> Sequenz '\n' '\r' wieder <strong>in</strong> e<strong>in</strong> e<strong>in</strong>faches '\n'. Beim Lesen im Textmodus wird<br />
unter Dos/W<strong>in</strong>dows zudem das Zeichen mit dem ASCII-Code 26 (EOF, CTRL-Z) als Dateiende<br />
angesehen, der Rest der Datei nach <strong>die</strong>sem Zeichen kann somit nicht gelesen werden.<br />
Um im B<strong>in</strong>ärmodus zu arbeiten, muss den oben angegebenen Zugriffsarten noch e<strong>in</strong> 'b' angehängt<br />
werden, also z. B. "rb" oder "w+b".<br />
Wenn <strong>die</strong> Datei nicht mehr benötigt wird, muss sie mit fclose() wieder geschlossen werden.<br />
fclose (DieDatei);<br />
Zur Arbeit mit Textdateien können ähnliche Funktionen wie zur E<strong>in</strong>/Ausgabe über Bildschirm <strong>und</strong><br />
Tastatur verwendet werden, den Funktionsnamen ist e<strong>in</strong>fach e<strong>in</strong> f vorangestellt <strong>und</strong> sie haben e<strong>in</strong>en<br />
File-Po<strong>in</strong>ter als zusätzliches Argument:<br />
Tastatur/Bildschirm Funktion Datei<br />
pr<strong>in</strong>tf("Wert ist %d", i); Formatierte Ausgabe fpr<strong>in</strong>tf(DieDatei, "Wert ist %d",i);<br />
scanf("%f", &f); Formatierte E<strong>in</strong>gabe fscanf(DieDatei, "%f", &f);<br />
c = getchar(); Zeichen e<strong>in</strong>lesen c = fgetc(DieDatei);<br />
putchar(c); Zeichen ausgeben fputc(c, DieDatei);<br />
gets(Buffer); Zeile e<strong>in</strong>lesen *) fgets(Buffer, MaxLength, DieDatei);<br />
puts(Text); Zeile ausgeben *) fputs(Text, DieDatei);<br />
*) Achtung, Zeilenwechsel werden von den f... Funktionen anders behandelt (Nicht entfernt <strong>und</strong> h<strong>in</strong>zugefügt).<br />
Gedruckt am 11.09.2008 13:04:00 Letzte Änderung am: 11. September 2008 Version 2.4, I. Oesch 84/147