FGETPOS |
Demande la position dans le fichier |
---|---|
Langage C++ | cstdio (stdio.h) |
Syntaxe
int fgetpos(FILE *ptrfichier,fpos_t *pos); |
Paramètres
Nom | Description |
---|---|
ptrfichier | Ce paramètre permet d'indiquer l'identificateur de fichier |
pos | Ce paramètre permet d'indiquer la position dans le fichier |
Description
Cette fonction demande la position du pointeur dans un fichier.
Remarques
- La fonction fgetpos() entrepose la valeur actuelle de l'indicateur de position du fichier dans l'objet pointé par position. L'objet pointé par position doit être de type fpos_t.
- La valeur y étant entreposée n'est utile que dans un appel ultérieur à fsetpos().
- Si une erreur se produit, fgetpos() renvoie une valeur non nulle; sinon, il renvoie zéro.
- Définition et utilité : La fonction fgetpos est utilisée pour obtenir la position actuelle du curseur dans un fichier ouvert en mode lecture ou écriture. Elle est définie dans la bibliothèque <cstdio> et permet de récupérer cette position dans une variable de type fpos_t, ce qui permet de revenir à cette position ultérieurement avec la fonction fsetpos. Cela est particulièrement utile pour gérer la lecture/écriture dans des fichiers de manière flexible.
- Structure fpos_t : Le type fpos_t est une structure permettant d'entreposer la position dans le fichier de manière précise. Ce type est conçu pour être indépendant des plateformes et des systèmes de fichiers, garantissant ainsi que la position peut être récupérée et réutilisée de manière cohérente. La structure fpos_t peut être vue comme une abstraction permettant de gérer les positions de manière portable.
- Sauvegarde et restauration de la position du curseur : fgetpos est souvent utilisée pour sauvegarder la position du curseur dans un fichier afin de pouvoir y revenir plus tard. Cela est particulièrement utile lorsque vous travaillez avec des fichiers volumineux ou complexes et que vous devez revenir à un endroit précis du fichier après avoir effectué des lectures ou écritures à différents endroits. Par exemple, après avoir lu une section d'un fichier, vous pouvez sauvegarder la position avec fgetpos et y revenir avec fsetpos pour reprendre l'opération à partir du même point.
- Comparaison avec ftell : Bien que fgetpos et ftell aient des objectifs similaires (obtenir la position du curseur dans un fichier), la principale différence réside dans le fait que fgetpos utilise un type fpos_t, tandis que ftell retourne un entier. Le type fpos_t est conçu pour être plus flexible et précis, ce qui est particulièrement important pour les systèmes de fichiers nécessitant une gestion fine des positions dans les fichiers.
- Utilisation avec fsetpos : Après avoir utilisé fgetpos pour obtenir la position actuelle du curseur, vous pouvez utiliser fsetpos pour restaurer cette position.
- Utilisation avec les fichiers binaires et textuels : fgetpos peut être utilisée avec des fichiers ouverts en mode binaire ou texte. Cependant, il faut être vigilant car les fichiers texte peuvent introduire des comportements particuliers, notamment en ce qui concerne la gestion des fins de ligne ou des caractères de retour chariot (\r\n), pouvant influencer la position du curseur. Les fichiers binaires, en revanche, ne sont pas affectés par de tels détails, et fgetpos fonctionne de manière plus prévisible avec des fichiers binaires.
- Gestion des erreurs : Lors de l'appel à fgetpos, il est crucial de vérifier si la fonction retourne EOF, ce qui indique une erreur. Une erreur peut survenir pour diverses raisons, telles qu'un fichier fermé ou un problème d'accès aux données. En cas d'erreur, il est conseillé d'utiliser la fonction ferror pour diagnostiquer le problème et prendre les mesures appropriées, comme fermer ou rouvrir le fichier, ou même afficher un message d'erreur.
Exemple
Prenons pour acquis que le fichier «gladir.txt» est le contenu :
gladir.comVoici un exemple montrant une utilisation plus classique de cette fonction :

- #include <iostream>
- #include <stdio.h>
- #include <stdlib.h>
-
- int main()
- {
- FILE * Handle = fopen("gladir.txt", "r");
- if(Handle != NULL) {
- int I;
- fpos_t P;
- for(I = 1; I <= 10; I++) {
- fgetpos(Handle,&P);
- std::cout << (char) fgetc(Handle) << ", position=" << P.__pos << std::endl;
- }
- fclose(Handle);
- }
- return 0;
- }
on obtiendra le résultat suivant :
g, position=0l, position=1
a, position=2
d, position=3
i, position=4
r, position=5
., position=6
c, position=7
o, position=8
m, position=9
Voir également
Langage de programmation - C++ - Référence procédures et fonctions - fseek
Langage de programmation - C++ - Référence procédures et fonctions - fsetpos
Langage de programmation - C++ - Référence procédures et fonctions - ftell
Langage de programmation - C - Référence procédures et fonctions - fgetpos
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 731.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 99.
Dernière mise à jour : Lundi, le 3 août 2015