Namespaces
Variants

fgetpos

From cppreference.net
< c ‎ | io
Défini dans l'en-tête <stdio.h>
int fgetpos ( FILE * stream, fpos_t * pos ) ;
(jusqu'à C99)
int fgetpos ( FILE * restrict stream, fpos_t * restrict pos ) ;
(depuis C99)

Obtient l'indicateur de position du fichier et l'état d'analyse actuel (le cas échéant) pour le flux de fichier stream et les stocke dans l'objet pointé par pos . La valeur stockée n'a de sens que comme entrée pour fsetpos .

Table des matières

Paramètres

stream - flux de fichier à examiner
pos - pointeur vers un objet fpos_t pour stocker l'indicateur de position du fichier

Valeur de retour

0 en cas de succès, valeur non nulle sinon.

Exemple

#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    // prépare un fichier contenant 4 valeurs de 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);
    // démonstration de l'utilisation de fsetpos pour revenir au début d'un fichier
    fp = fopen("test.bin", "rb");
    fpos_t pos;
    fgetpos(fp, &pos);               // stocke le début du fichier dans pos
    double d;
    rc = fread(&d, sizeof d, 1, fp); // lit le premier double
    assert(rc == 1);
    printf("First value in the file: %.1f\n", d);
    fsetpos(fp,&pos);                // repositionne la position du fichier au début
    rc = fread(&d, sizeof d, 1, fp); // relit le premier double
    assert(rc == 1);
    printf("First value in the file again: %.1f\n", d);
    fclose(fp);
    // démonstration de la gestion d'erreur
    rc = fsetpos(stdin, &pos);
    if (rc)
        perror("could not fsetpos stdin");
}

Sortie :

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

Références

  • Norme C23 (ISO/CEI 9899:2024) :
  • 7.21.9.1 La fonction fgetpos (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.21.9.1 La fonction fgetpos (p: TBD)
  • Norme C11 (ISO/CEI 9899:2011) :
  • 7.21.9.1 La fonction fgetpos (p: 336)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.19.9.1 La fonction fgetpos (p: 302)
  • Norme C89/C90 (ISO/IEC 9899:1990) :
  • 4.9.9.1 La fonction fgetpos

Voir aussi

renvoie l'indicateur de position actuel du fichier
(fonction)
déplace l'indicateur de position du fichier vers un emplacement spécifique
(fonction)
déplace l'indicateur de position du fichier vers un emplacement spécifique
(fonction)
Documentation C++ pour fgetpos