fseek
Nach oben zu stdio.h - Index
Header-Datei
stdio.h
Kategorie
Routinen für die Eingabe/Ausgabe
Prototyp
int fseek(FILE *stream, long offset, int whence); int _fseeki64(FILE *stream, __int64 offset, int whence);
Beschreibung
Versetzt den Dateizeiger eines Streams an eine neue Position.
fseek setzt den mit dem Stream verbundenen Dateizeiger an eine neue Position, die offset Bytes von der durch whence angegebenen Position entfernt ist. Bei Streams im Textmodus sollte offset 0
oder einen von ftell zurückgegebenen Wert enthalten.
whence muss einen der Werte 0
, 1
oder 2
enthalten; diese Werte repräsentieren drei in stdio.h definierte symbolische Konstanten mit folgender Bedeutung:
|
|
Dateianfang
|
|
|
Aktuell Dateizeigerposition
|
|
|
Dateiende
|
fseek verwirft alle mit ungetc zurückgestellten Zeichen. fseek wird für die Eingabe/Ausgabe der Streams verwendet; verwenden Sie für E/A des Datei-Handle die Funktion lseek.
Nach fseek kann die nächste Operation mit einer zum Aktualisieren geöffneten Datei eine Eingabe oder eine Ausgabe sein.
Rückgabewert
Konnte der Dateizeiger erfolgreich neu positioniert werden, gibt fseek 0
, bei einem Fehler einen Wert ungleich Null zurück.
Bei einem Fehler wird die globale Variable errno auf einen der folgenden Werte gesetzt:
|
Ungültiger Dateizeiger |
|
Ungültiges Argument |
|
Ungültige Neupositionierung auf dem Gerät |
Beispiel
#include <stdio.h> long filesize(FILE *stream); int main(void) { FILE *stream; stream = fopen("MYFILE.TXT", "w+"); fprintf(stream, "This is a test"); printf("Filesize of MYFILE.TXT is %ld bytes\n", filesize(stream)); fclose(stream); return 0; } long filesize(FILE *stream) { long curpos, length; curpos = ftell(stream); fseek(stream, 0L, SEEK_END); length = ftell(stream); fseek(stream, curpos, SEEK_SET); return length; }
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |
+ |
+ |
+ |