fsetpos()

fsetpos() ist in der stdio definiert, die in C über stdio.h, bzw in C++ über cstdio eingebunden wird.

Funktion

fsetpos() dient dazu die aktuelle Schreibe/Lese-Position in der angegebenen Datei bzw. im angegebenem Stream zu verändern. fsetpos() ist eine alternative Schnittstelle zur Funktion fseek().

Signatur

#include <stdio.h>
int fsetpos(FILE *file, fpos_t * pos);

file: Gültiger Zeiger auf ein FILE Element
pos: Gültiger Zeiger auf ein fpos_t Element, dass eine gespeicherte Position enthält.

Return Value: Aktuelle Schreib/Leseposition innerhalb der Datei oder -1 im Fehlerfall. In diesem Fall wird errno gesetzt.

Der Rückgabewert ist nicht zwingend eine Angabe in Byte, sie kann aber in jedem Fall verwendet werden, um mit fseek() an eine Position innerhalb der Datei zu springen. Entsprechend gilt dies für pos und die Funktion fgetpos().
fpos_t dient auf manchen Nicht-Unix-Systemen dazu, sich in Textfiles zu positionieren, fpos_t kann auf diesen Systemen somit aufwendiger implementiert sein.

Fehlerquellen

Es muss darauf geachtet werden, dass ein gültiger FILE Zeiger und eine gültige Position übergeben wird.

Es kann (in wirklich seltenen Fällen) vorkommen, dass der Rückgabewert keine Angabe in Byte ist. Der Wert kann aber in jedem Fall verwendet werden, um mit fseek() an eine Position innerhalb der Datei zu springen.

Beispiel

#include <stdlib.h>
#include <stdio.h>
 
int main (void)
{
  FILE *file = fopen("testfile.txt", "r");
  fpos_t position; 
  // (...)
 
  // Aktuelle Dateiposition speichern
  long int intpos = fgetpos(file, &position);
 
  // (...)
 
  // Dateiposition wiederherstellen
  intpos = fsetpos(file, &position);
  // (...)
 
  fclose(file);
  return EXIT_SUCCESS;
}

siehe auch