Namespaces
Variants

fgetpos

From cppreference.net
< c ‎ | io
Definiert im Header <stdio.h>
int fgetpos ( FILE * stream, fpos_t * pos ) ;
(bis C99)
int fgetpos ( FILE * restrict stream, fpos_t * restrict pos ) ;
(seit C99)

Ermittelt die Dateipositionsanzeige und den aktuellen Analysezustand (falls vorhanden) für den Dateistrom stream und speichert sie in dem Objekt, auf das pos zeigt. Der gespeicherte Wert ist nur als Eingabe für fsetpos von Bedeutung.

Inhaltsverzeichnis

Parameter

stream - zu untersuchender Dateistrom
pos - Zeiger auf ein fpos_t Objekt zum Speichern der Dateipositionsanzeige

Rückgabewert

0 bei Erfolg, andernfalls ein Wert ungleich Null.

Beispiel

#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    // bereite eine Datei mit 4 Werten vom Typ double vor
    enum {SIZE = 4};
    FILE* fp = fopen("test.bin", "wb");
    assert(fp);
    int rc = fwrite((double[SIZE]){1.1, 2.2, 3.3, 4.4}, sizeof(double), SIZE, fp);
    assert(rc == SIZE);
    fclose(fp);
    // Demo der Verwendung von fsetpos zum Zurückspringen zum Dateianfang
    fp = fopen("test.bin", "rb");
    fpos_t pos;
    fgetpos(fp, &pos);               // speichere den Dateianfang in pos
    double d;
    rc = fread(&d, sizeof d, 1, fp); // lese das erste double
    assert(rc == 1);
    printf("First value in the file: %.1f\n", d);
    fsetpos(fp,&pos);                // setze die Dateiposition zurück zum Dateianfang
    rc = fread(&d, sizeof d, 1, fp); // lese das erste double erneut
    assert(rc == 1);
    printf("First value in the file again: %.1f\n", d);
    fclose(fp);
    // Demo der Fehlerbehandlung
    rc = fsetpos(stdin, &pos);
    if (rc)
        perror("could not fsetpos stdin");
}

Ausgabe:

First value in the file: 1.1
First value in the file again: 1.1
could not fsetpos stdin: Illegal seek

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.21.9.1 Die fgetpos-Funktion (S.: TBD)
  • C17-Standard (ISO/IEC 9899:2018):
  • 7.21.9.1 Die fgetpos-Funktion (S: TBD)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.21.9.1 Die fgetpos-Funktion (S: 336)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.19.9.1 Die fgetpos-Funktion (S. 302)
  • C89/C90 Standard (ISO/IEC 9899:1990):
  • 4.9.9.1 Die fgetpos-Funktion

Siehe auch

gibt die aktuelle Dateipositionsanzeige zurück
(Funktion)
bewegt die Dateipositionsanzeige an eine bestimmte Position in einer Datei
(Funktion)
bewegt die Dateipositionsanzeige an eine bestimmte Position in einer Datei
(Funktion)
C++ documentation für fgetpos