====== fsetpos() ====== ''fsetpos()'' ist in der ''[[c:lib:stdio:start|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 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 ''[[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 ''[[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 ''[[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]]: [[fseek()]], [[fgetpos()]]