====== fseek() ======
''fseek()'' ist in der ''[[c:lib:stdio:start|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
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
#include
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 =====
[[c:lib:stdio:start|stdio]]: [[c:lib:stdio:ftell|ftell()]]