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