open_memstream, open_wmemstream - Ouvrir un flux associé à un
tampon dynamique en mémoire
Bibliothèque C standard (
libc,
-lc)
#include <stdio.h>
FILE *open_memstream(char **ptr, size_t *taille_tampon);
#include <wchar.h>
FILE *open_wmemstream(wchar_t **ptr, size_t *taille_tampon);
open_memstream(),
open_wmemstream() :
Depuis la glibc 2.10 :
_POSIX_C_SOURCE >= 200809L
Avant la glibc 2.10 :
_GNU_SOURCE
La fonction
open_memstream() ouvre un flux en écriture vers un
tampon en mémoire. Le tampon est dynamiquement alloué et grandit
automatiquement selon les besoins. La taille initiale du tampon est
égale à zéro. Après la fermeture du flux,
l'appelant doit libérer ce tampon à l'aide de
free(3).
Les adresses pointées par
ptr et
taille_tampon font
respectivement référence à l'emplacement actuel du tampon
et à sa taille. Les adresses pointées par
ptr et
taille_tampon sont mises à jour chaque fois qu'un flux est
fermé à l'aide de
fclose(3) ou vidé à
l'aide de
fflush(3). Ces valeurs restent valables tant que l'appelant
n'effectue pas de sortie sur le flux. Si d'autres sorties sont
réalisées, alors le flux doit être de nouveau vidé
avant de pouvoir accéder à ces valeurs.
Un octet de valeur zéro est conservé à la fin du tampon.
Cet octet
n'est pas inclus dans la valeur de la taille stockée
à l'adresse
taille_tampon.
Le flux associé au tampon conserve la valeur de la position
d'écriture actuelle dont la valeur initiale est zéro (le
début du tampon). Chaque opération d'écriture ajuste
implicitement la position d'écriture actuelle. La position
d'écriture associée au flux peut être changée
à l'aide de
fseek(3) ou
fseeko(3). Déplacer la
position d'écriture après la fin des données
déjà écrites remplit l'intervalle vide avec des octets de
valeur zéro.
La fonction
open_wmemstream() est similaire à
open_memstream(), mais elle opère sur des caractères
larges et non sur des octets.
Si elles réussissent, les fonctions
open_memstream() et
open_wmemstream() renvoient un pointeur de type
FILE. Sinon,
elles renvoient NULL et
errno est définie pour préciser
l'erreur.
open_memstream() était déjà disponible dans la
glibc 1.0.x.
open_wmemstream() est disponible depuis la
glibc 2.4.
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface |
Attribut |
Valeur |
open_memstream(), open_wmemstream() |
Sécurité des threads |
MT-Safe |
POSIX.1-2008. Ces fonctions ne sont pas spécifiées dans
POSIX.1-2001 et ne sont pas souvent disponibles sur d'autres systèmes.
Il n'y a pas de descripteur de fichier associé au flux renvoyé par
ces fonctions (par exemple,
fileno(3) renverra une erreur si elle est
appelée avec un tel flux).
Avant la glibc 2.7, un positionnement après la fin d'un flux
créé par
open_memstream() n'agrandit pas le
tampon ; au lieu de cela, l'appel à
fseek(3)
échoue et renvoie
-1.
Voir
fmemopen(3).
fmemopen(3),
fopen(3),
setbuf(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]>,
Frédéric Hantrais <
[email protected]> et Lucien Gentis
<
[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]