Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

       open_memstream, open_wmemstream  - Ouvrir un flux associé à un tampon dynamique en mémoire

SYNOPSIS

       #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);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consulter
   feature_test_macros(7)) :

       open_memstream(), open_wmemstream() :
           Depuis la version 2.10 de la glibc :
               _POSIX_C_SOURCE >= 200809L
           Avant la version 2.10 de la glibc :
               _GNU_SOURCE

DESCRIPTION

       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.

VALEUR RENVOYÉE

       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.

VERSIONS

       open_memstream()  était  déjà  disponible  dans  la  glibc 1.0.x.  open_wmemstream()   est
       disponible depuis la glibc 2.4.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │InterfaceAttributValeur  │
       ├────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │open_memstream(), open_wmemstream()                     │ Sécurité des threads │ MT-Safe │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

CONFORMITÉ

       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.

NOTES

       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).

BOGUES

       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.

EXEMPLES

       Voir fmemopen(3).

VOIR AUSSI

       fmemopen(3), fopen(3), setbuf(3)

COLOPHON

       Cette page fait partie de la publication 5.13 du projet man-pages Linux.  Une  description
       du  projet et des instructions pour signaler des anomalies et la dernière version de cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.rafin@laposte.net>, Thierry
       Vignaud <tvignaud@mandriva.com>, François Micaux, Alain  Portal  <aportal@univ-montp2.fr>,
       Jean-Philippe    Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-
       luc.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier   <barbier@debian.org>,   David   Prévot  <david@tilapin.org>,  Frédéric  Hantrais
       <fhantrais@gmail.com> et Lucien Gentis <lucien.gentis@waika9.com>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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 à ⟨debian-l10n-french@lists.debian.org⟩.