====== fgetpos() ====== ''fgetpos()'' ist in der ''[[c:lib:stdio:start|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 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 ''[[c:lib:errno:errno]]'' gesetzt. Der Rückgabewert ist nicht zwingend eine Angabe in Byte, sie kann aber in jedem Fall verwendet werden, um mit ''[[c:lib:stdio:fseek|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 ''[[c:lib:stdio:fseek|fseek()]]'' an eine Position innerhalb der Datei zu springen. ===== Beispiel ===== #include #include 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 ===== [[:|stdio]]: [[ftell()]], [[fsetpos()]]