fgetpos()
ist in der stdio
definiert, die in C über stdio.h
, bzw in C++ über cstdio
eingebunden wird.
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()
.
#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.
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.
#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; }