FSETPOS |
Fixe la position dans le fichier |
---|---|
Langage C | stdio.h |
Syntaxe
int fsetpos(FILE *ptrfichier,const fpos_t *pos); |
Paramètres
Nom | Description |
---|---|
ptrfichier | Ce paramètre permet d'indiquer l'identificateur du fichier |
pos | Ce paramètre permet d'indiquer la position du pointeur dans le fichier |
Description
Cette fonction permet de fixer la position du pointeur de fichier.
Algorithme
MODULE FSETPOS(stream, pos) SI stream est NULL ALORS RETOURNE erreur "Flux non valide" FIN SI SI pos est NULL ALORS RETOURNE erreur "Position invalide" FIN SI SI la position pos est valide pour le flux stream ALORS Positionner le curseur du flux stream à la position spécifiée par pos RETOURNE 0 * Succès SINON RETOURNE erreur "Impossible de positionner le curseur" FIN SI |
Remarques
- Fonction de positionnement précise avec fsetpos : La fonction fsetpos en langage de programmation C permet de positionner précisément le curseur de lecture/écriture d'un fichier à une position sauvegardée. Contrairement à fseek, utilisant un déplacement, fsetpos utilise une structure de type fpos_t pour définir une position spécifique dans le fichier. Elle est donc particulièrement utile pour travailler avec des positions sauvegardées.
- Compatibilité avec les systèmes complexes de fichiers : fsetpos est une fonction de positionnement qui garantit la compatibilité avec les systèmes de fichiers plus complexes, notamment ceux utilisant des encodages multi-octets ou des caractères spéciaux. Le type fpos_t est conçu pour encapsuler des informations de position de manière portable et précise, surtout en mode texte où l'encodage peut affecter les positions.
- Utilisation conjointe avec fgetpos pour la sauvegarde et la restauration : fsetpos est généralement utilisé en tandem avec fgetpos, permettant de sauvegarder la position actuelle du curseur dans une variable fpos_t. Cette approche est particulièrement utile dans les applications nécessitant la sauvegarde et la restauration de la position de lecture ou d'écriture, comme dans la gestion de points de vérifications ou de marqueurs dans un fichier.
- Limitation des systèmes de fichiers et flux non supportés : fsetpos ne fonctionne pas sur tous les types de flux de données. Certains flux de données, comme les flux de données standard (stdin, stdout, stderr), ne possèdent pas de position de fichier et, par conséquent, ne peuvent pas être manipulés avec fsetpos. Cette fonction est donc réservée aux fichiers accessibles par des positions claires.
- Gestion des erreurs avec fsetpos : Si fsetpos échoue, elle retourne une valeur non nulle, indiquant qu'une erreur est survenue. Les erreurs peuvent provenir de tentatives de positionnement au-delà des limites du fichier, ou d'une utilisation de fpos_t non valide. Il est donc recommandé de vérifier le retour de la fonction pour garantir un bon fonctionnement et de gérer les erreurs de manière appropriée.
- Différence entre fsetpos et fseek en termes de précision : Tandis que fseek utilise un entier pour représenter la position, fsetpos utilise un type fpos_t, souvent plus précis, notamment en mode texte. En effet, fpos_t prend en compte les nuances des encodages et est donc mieux adapté pour les fichiers où les positions peuvent ne pas être strictement linéaires en nombre d'octets.
- Portabilité et dépendance à la plateforme de fpos_t : La structure fpos_t, utilisée par fsetpos, est conçue pour offrir une certaine portabilité, mais sa représentation exacte dépend de la plateforme. Sur certains systèmes, elle peut contenir plus d'informations qu'un simple entier, ce qui signifie que fsetpos est généralement plus fiable pour une manipulation de fichiers multi-plateformes que fseek.
Exemple
Prenons pour acquis que le fichier «readtext.txt» est le contenu :
Ceci est un exemple de fsetpos sur le site de Gladir.comVoici un exemple montrant une utilisation plus classique de cette fonction :
Essayer maintenant !
on obtiendra le résultat suivant :
0:Cec1: un
2:ple
3:set
Voir également
Langage de programmation - C - Référence de procédures et fonctions - fgetpos
Langage de programmation - C - Référence de procédures et fonctions - fseek
Langage de programmation - C - Référence de procédures et fonctions - ftell
Langage de programmation - C++ - Référence de procédures et fonctions - fsetpos
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 732.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 115.