fseek()

fseek() ist in der stdio definiert, die in C über stdio.h, bzw in C++ über cstdio eingebunden wird.

Funktion

fseek() dient dazu die aktuelle Schreibe/Lese-Position in der angegebenen Datei bzw im angegebenem Stream relativ zu einem angegebenen Bezugspunkt neu zu setzen.

Signatur

#include <stdio.h>
int fseek(FILE *file,long offset,int origin);

file: Zeiger auf geöffneten Stream.
offset: Position relativ zum Ursprung.
origin: Ursprung, von dem aus Position gesetzt wird.

Return Value: 0 bei Erfolg; ansonsten Fehlschlag.

origin Beschreibung
SEEK_SET Der Start des Streams markiert den Ursprung.
SEEK_CUR Aktuelle Position im Stream setzt den Ursprung.
SEEK_END Das Ende des Streams wird als Ursprung gewählt.

Es ist möglich mit fseek() hinter das Ende einer Datei zu springen. Es ist nicht möglich, vor den Anfang einer Datei zu springen. Das EOF Flag der Datei wird gelöscht.

Fehlerquellen

Durch den automatischen Wechsel zwischen Schreib- und Lesemodus kann es zu Fehlern kommen, wenn man die falschen Operationen auf den Stream ausführt.

Beispiel

#include <stdlib.h>
#include <stdio.h>
 
int main( void )
{
  FILE *f = fopen("datei.txt", "w+b");
 
  fputs( "proggen.org", f );
  fseek( f, 3, SEEK_SET );  /* 4. Position */
 
  char a;
  fread( &a, 1, 1, f );
  printf( "Vierter Buchstabe in der Datei: '%c'\n", a );
 
  fclose( f );
  return EXIT_SUCCESS; 
}

Ausgabe:

Vierter Buchstabe im TempFile: 'g'

siehe auch