Namensräume
Varianten
Aktionen

fgetpos

Von cppreference.com
< c‎ | io
 
 
Datei-Ein-/Ausgabe
Typen und Objekte
        
Funktionen
Datei-Zugriff
(C95)
Unformatierte Ein-/Ausgabe
(C95)(C95)
(C95)
(C95)(C95)
(C95)
(C95)

Formatierte Eingabe
Direkte Ein-/Ausgabe
Formatierte Ausgabe
Dateipositionierung
fgetpos
Fehlerbehandlung
Operationen auf Dateien
 
Definiert in 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 Dateiposition und den aktuellen Parse-Status (falls vorhanden) für den Dateistream stream und speichert sie im Objekt, auf das pos zeigt. Der gespeicherte Wert ist nur als Eingabe für fsetpos sinnvoll.

Inhalt

[bearbeiten] Parameter

stream - zu untersuchender Dateistream
pos - Zeiger auf ein fpos_t-Objekt, in dem die Dateiposition gespeichert werden soll

[bearbeiten] Rückgabewert

0 bei Erfolg, ein Wert ungleich Null bei Fehler.

[bearbeiten] 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

[bearbeiten] Referenzen

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

[bearbeiten] Siehe auch

gibt den aktuellen Dateipositionierungsindikator zurück
(Funktion) [bearbeiten]
verschiebt den Dateipositionierungsindikator an eine bestimmte Stelle in einer Datei
(Funktion) [bearbeiten]
verschiebt den Dateipositionierungsindikator an eine bestimmte Stelle in einer Datei
(Funktion) [bearbeiten]
C++-Dokumentation für fgetpos