Navigation innerhalb einer Datei

Index vorige Seite nächste Seite

Manchmal möchte man auch gern wissen, wo man sich in einer Datei befindet. Den Abstand der aktuellen Position in Bytes vom Dateianfang aus gesehen liefert die Funktion ftell(Datei).
Beispiel:
int pos;
...
FILE *stream;           // Anrede fuer die Datei
...
stream=fopen(...);
...
pos=ftell(stream);      // gibt die aktuelle Stelle an pos
...
Oder man möchte nicht die gesamte Datei lesen, sondern nur bestimmte Informationen an einer bestimmten Stelle. Dann kann man sich von fseek an eine bestimmte Stelle verpflanzen lassen. Ein Beispiel:
Eine Datei ist geöffnet. Nicht der gesamte Inhalt ist von Bedeutung, nur ein Integerwert ist interessant. Dieser fängt am 46. Byte an.
int wert;
...
FILE *stream;                     // Anrede fuer die Datei
...
stream=fopen(...);
...
fseek(stream,46,SEEK_SET);        // setzt Dateizeiger auf 46
...
fread(wert,sizeof(int),1,stream); // liest den Wert aus
...
mit SEEK_SET wird festgelegt, daß vom Dateianfang aus gegangen werden soll.
SEEK-Konstanten:
SEEK_SET  : Suche am Dateianfang beginnen
SEEK_CUR  : Suche an aktueller Position beginnen
SEEK_END  : Suche am Dateiende beginnen
Und es gibt auch Tage im Leben, da will man einfach nur wissen, ob man schon am Ende angelangt ist. Die Frage beantwortet feof.
Beispiel:
FILE *stream;           // Anrede fuer die Datei
...
stream=fopen(...);
...
if (feof(stream))       // prueft, ob am Dateiende angelangt
  printf(" Am Ende ");  // schreibt Meldung auf Bildschirm
...


Index vorige Seite nächste Seite

Autor: Ulrich Kritzner