Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

fsetpos, fsetpos64 - Lese-/Schreibzeiger positionieren

&pagelevel(4)&pagelevel

Definition

#include <stdio.h>

int fsetpos(FILE *dz, const fpos_t *pos);
int fsetpos64(FILE *dz, const fpos64_t *pos);

fsetpos und fsetpos64 positionieren den Lese-/Schreibzeiger der Datei mit Dateizeiger dz auf eine zuvor mit fgetpos bzw. fgetpos64 ermittelte Position pos.
Nach der Positionierung kann die nächste Operation sowohl eine Lese- als auch eine Schreibfunktion sein.

Für die Bearbeitung von Dateien > 2 GB verfahren Sie wie folgt:

  • Falls das Define _FILE_OFFSET_BITS 64 (siehe "Unterstützung von DVS- und UFS-Dateien > 2 GB") gesetzt ist, rufen Sie freopen auf. Implizit wird dann freopen64 mit den passenden Parametern verwendet.

  • Andernfalls müssen Sie freopen64 aufrufen.

Es besteht kein funktioneller Unterschied zwischen fsetpos und fsetpos64, außer dass fsetpos64 einen fpos64_t Typ verwendet.

Returnwert

 0                bei erfolgreicher Ausführung von fsetpos.

!= 0              im Fehlerfall. Zusätzlich wird errno auf EBADF gesetzt.

Hinweise

fsetpos und fsetpos64 lassen sich auf Binärdateien (SAM im Binärmodus, PAM, INCORE) und Textdateien (SAM im Textmodus, ISAM) anwenden.
fsetpos und fsetpos64 sind nicht anwendbar für Systemdateien (SYSDTA, SYSLST, SYSOUT).

Ein erfolgreicher Aufruf der Funktion fsetpos bzw. fsetpos64 löscht das EOF-Flag der Datei und hebt alle Effekte der vorangegangenen ungetc-Aufrufe für diese Datei auf.

Werden in eine Textdatei neue Sätze geschrieben (geöffnet zum Neuerstellen oder Anhängen) und erfolgt ein fsetpos- bzw. fsetpos64-Aufruf, dann werden zunächst ggf. restliche Daten aus dem Puffer in die Datei geschrieben und mit Zeilenende (\n) abgeschlossen.
Ausnahme bei ANSI-Funktionalität:
Wenn die Daten einer ISAM-Datei im Puffer nicht mit einem Neue-Zeile-Zeichen enden, bewirkt fsetpos bzw. fsetpos64 keinen Zeilenwechsel (bzw. Satzwechsel). D.h., die Daten werden beim Schreiben aus dem Puffer nicht automatisch mit einem Neue-Zeile-Zeichen abgeschlossen. Nachfolgende Daten verlängern den Satz in der Datei. Beim Lesen einer ISAM-Datei werden daher nur Neue-Zeile-Zeichen eingelesen, die vom Programm explizit geschrieben wurden.

Für ISAM-Dateien sind die Funktionspaare fgetpos/fsetpos bzw. fgetpos64/fset pos64 wesentlich performanter als die vergleichbaren Funktionspaare ftell/fseek bzw. ftell64/fseek64.

Satz-E/A

In ISAM-Dateien mit Schlüsselverdoppelung kann mit fsetpos bzw. fsetpos64 nicht auf den zweiten oder höheren Schlüssel einer Gruppe mit gleichen Schlüsseln positioniert werden. Dies lässt sich nur durch sequenzielles Lesen bzw. Löschen erreichen.
Mit fsetpos und fsetpos64 kann nur auf den ersten Satz oder hinter den letzten Satz einer solchen Gruppe positioniert werden.

Siehe auch   fgetpos, fgetpos64, fseek, fseek64, ftell, ftell64