Die Funktion fseek () in C ++ setzt den Dateipositionsindikator für den angegebenen Dateistream.
Die Funktion fseek () ist in der Header-Datei definiert.
fseek () Prototyp
int fseek (DATEI * Stream, langer Offset, int Ursprung);
Wenn die Datei im Binärmodus geöffnet wird, ist die neue Position des Dateizeigers genau um Bytes vom Ursprung versetzt.
Wenn die Datei im Textmodus geöffnet wird, werden folgende Werte für den Versatz unterstützt:
- Null: Es funktioniert mit jedem Ursprungswert, dh SEEK_SET, SEEK_CUR und SEEK_END.
- Von einem Aufruf von ftell (stream) zurückgegebener Wert: Funktioniert nur mit dem Ursprung von SEEK_SET.
Wenn der Stream breit ausgerichtet ist, werden die Einschränkungen sowohl für Text- als auch für Binär-Streams angewendet, dh das Ergebnis von ftell ist mit SEEK_SET zulässig, und der Nullpunktversatz ist von SEEK_SET und SEEK_CUR zulässig, nicht jedoch von SEEK_END.
Die Funktion fseek macht auch die Auswirkungen von ungetc rückgängig und löscht gegebenenfalls den Status des Dateiende.
Wenn ein Lese- oder Schreibfehler auftritt, wird der Fehler gesetzt und die Dateiposition wird nicht beeinflusst.
fseek () Parameter
- stream: Der zu ändernde Dateistream.
- Offset: Die Anzahl der Zeichen, die vom Ursprung verschoben werden sollen.
- Ursprung: Position, die als Referenz zum Hinzufügen zum Versatz verwendet wird. Es kann folgende Werte haben:
Wert | Beschreibung |
---|---|
SEEK_SET | Beginn der Datei |
SEEK_CUR | Aktuelle Position des Dateizeigers |
SEEK_END | Ende der Datei |
fseek () Rückgabewert
- Bei Erfolg gibt die Funktion fseek () Null zurück, andernfalls ungleich Null.
Beispiel: Wie funktioniert die Funktion fseek ()?
#include int main() ( FILE* fp = fopen("example.txt","w+"); char ch; fputs("Erica 25 Berlin", fp); rewind(fp); printf("Name: "); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("Age: "); fseek(fp,10,SEEK_SET); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("City: "); fseek(fp,15,SEEK_SET); while((ch=fgetc(fp))!=EOF) putchar(ch); putchar(''); fclose(fp); return 0; )
Wenn Sie das Programm ausführen, lautet die Ausgabe wie folgt:
Name: Erica Alter: 25 Stadt: Berlin