fgetpos, fseek, fsetpos, ftell, rewind - Positionner un flux
Bibliothèque C standard (
libc,
-lc)
#include <stdio.h>
int fseek(FILE *stream, long offset, int whence);
long ftell(FILE *stream);
void rewind(FILE *stream);
int fgetpos(FILE *restrict stream, fpos_t *restrict pos);
int fsetpos(FILE *stream, const fpos_t *pos);
La fonction
fseek() définit l'indicateur de position du flux
pointé par
stream. La nouvelle position, mesurée en
octets, est obtenue en additionnant
offset octets au point de
départ indiqué par
whence. Si
whence vaut
SEEK_SET,
SEEK_CUR ou
SEEK_END, le point de départ
correspond respectivement au début du fichier, à la position
actuelle, ou à la fin du fichier. Un appel réussi à
fseek() efface l'indicateur de fin de fichier du flux, et annule les
effets de toute fonction
ungetc(3) sur le même flux.
La fonction
ftell() obtient la valeur de l'indicateur de position du flux
pointé par
stream.
La fonction
rewind() place l'indicateur de position du flux pointé
par
stream au début du fichier. C'est l'équivalent
de :
(void) fseek(stream, 0L, SEEK_SET)
sauf que l'indicateur d'erreur du flux est également effacé
(consultez
clearerr(3)).
Les fonctions
fgetpos() et
fsetpos() sont des alternatives
à
ftell() et
fseek() (avec
whence à
SEEK_SET), en définissant et en mémorisant la valeur de
l'indicateur de position du fichier dans ou depuis l'objet
référencé par
pos. Sur certains systèmes
non UNIX, l'objet
fpos_t peut être un objet complexe, et ces
routines peuvent être les seules méthodes possibles pour
repositionner un flux de texte de manière portable.
Si le flux fait référence à un fichier ordinaire et que
l'indicateur de position du flux résultant dépasse la taille du
fichier, les écritures suivantes étendront le fichier avec un
trou, jusqu'à l'indicateur de position, avant d'envoyer une
donnée. Consultez
lseek(2) pour des détails sur les
sémantiques de recherche de fichier.
La fonction
rewind() ne renvoie pas de valeur. Si elles
réussissent totalement,
fgetpos(),
fseek(),
fsetpos() renvoient 0, et
ftell() renvoie la position actuelle.
Sinon, elles renvoient -1 et la variable globale
errno contient le code
d'erreur.
- EINVAL
- L'argument whence de fseek() n'était
ni SEEK_SET, ni SEEK_END, ni SEEK_CUR. Autrement, le
décalage du fichier aurait été négatif.
- ESPIPE
- Le descripteur de fichier stream sous-jacent n'est
pas valide (par exemple, il se rapporte à un tube, une FIFO ou une
socket).
Les fonctions
fgetpos(),
fseek(),
fsetpos(), et
ftell() peuvent également, en cas d'échec, définir
errno sur n'importe quelle erreur indiquée par les routines
fflush(3),
fstat(2),
lseek(2) et
malloc(3).
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface |
Attribut |
Valeur |
fseek(), ftell(), rewind(), fgetpos(),
fsetpos() |
Sécurité des threads |
MT-Safe |
POSIX.1-2001, POSIX.1-2008, C99.
lseek(2),
fseeko(3)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Frédéric Hantrais <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]