fgetpos()

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

Funktion

fgetpos() dient dazu die aktuelle Schreibe/Lese-Position in der angegebenen Datei bzw. im angegebenem Stream zu ermitteln. fgetpos() ist eine alternative Schnittstelle zur Funktion ftell().

Signatur

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

file: Gültiger Zeiger auf FILE Element
pos: Gültiger Zeiger auf ein fpos_t Element, das mit dem Ergebnis überschrieben wird.

Return Value: 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 fsetpos(). 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