====== 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()]]