Namespaces
Variants

fgetpos

Von de.cppreference.net
< c | io
 
 
Dateieingabe/-ausgabe
Typen und Objekte
        
Funktionen
Dateizugriff
(C95)
Unformatierte Ein-/Ausgabe
(C95)(C95)
(C95)
(C95)(C95)
(C95)
(C95)

Formatierte Eingabe
Direkte Ein-/Ausgabe
Formatierte Ausgabe
Dateipositionierung
Fehlerbehandlung
Operationen auf Dateien
 
Definiert in der Header-Datei <stdio.h>
int fgetpos( FILE* stream, fpos_t* pos );
(bis C99)
int fgetpos( FILE* restrict stream, fpos_t* restrict pos );
(seit C99)

Ermittelt den Dateipositionsanzeiger und den aktuellen Parsing-Zustand (sofern 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 sinnvoll.

Parameter

stream - zu untersuchender Dateistrom
pos - Zeiger auf ein fpos_t-Objekt, in dem der Dateipositionsanzeiger gespeichert werden soll

Rückgabewert

0 bei Erfolg 0, andernfalls einen Wert ungleich Null.

Beispiel

#include <assert.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    // prepare a file holding 4 values of type double
    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 using fsetpos to return to the beginning of a file
    fp = fopen("test.bin", "rb");
    fpos_t pos;
    fgetpos(fp, &pos);               // store start of file in pos
    double d;
    rc = fread(&d, sizeof d, 1, fp); // read the first double
    assert(rc == 1);
    printf("First value in the file: %.1f\n", d);
    fsetpos(fp,&pos);                // move file position back to the start of the file
    rc = fread(&d, sizeof d, 1, fp); // read the first double again
    assert(rc == 1);
    printf("First value in the file again: %.1f\n", d);
    fclose(fp);

    // demo error handling
    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-Norm (ISO/IEC 9899:2024):
  • 7.21.9.1 Die Funktion fgetpos (S.: TBD)
  • C17-Norm (ISO/IEC 9899:2018):
  • 7.21.9.1 Die Funktion fgetpos (S.: TBD)
  • C11-Norm (ISO/IEC 9899:2011):
  • 7.21.9.1 Die Funktion fgetpos (S.: 336)
  • C99-Norm (ISO/IEC 9899:1999):
  • 7.19.9.1 Die Funktion fgetpos (S.: 302)
  • C89/C90-Norm (ISO/IEC 9899:1990):
  • 4.9.9.1 Die Funktion fgetpos

Siehe auch

gibt den aktuellen Dateipositionsanzeiger zurück
(Funktion)
setzt den Dateipositionsanzeiger auf eine bestimmte Position in einer Datei
(Funktion)
setzt den Dateipositionsanzeiger auf eine bestimmte Position in einer Datei
(Funktion)
C++-Dokumentation für fgetpos