Provided by: manpages-fr-dev_4.13-4_all bug

NOM

       fread, fwrite - Entrées/sorties binaires sur un flux

SYNOPSIS

       #include <stdio.h>

       size_t fread(void *ptr, size_t taille, size_t nbelem, FILE *flux);

       size_t fwrite(const void *ptr, size_t taille, size_t nbelem,
                     FILE *flux);

DESCRIPTION

       La  fonction fread() lit nbelem éléments de données de taille octets chacun depuis le flux
       pointé par flux, et les stocke à l'emplacement pointé par ptr.

       La fonction fwrite() écrit nbelem éléments de données de taille octets chacun dans le flux
       pointé par flux, après les avoir récupérés depuis l'emplacement pointé par ptr.

       Pour des versions de ces fonctions ignorant les verrouillages, voir unlocked_stdio(3).

VALEUR RENVOYÉE

       En  cas  de réussite, fread() et fwrite() renvoient le nombre d'éléments lus ou écrits. Ce
       nombre n'est égal au nombre d'octets transférés que si taille est égal à 1. Si une  erreur
       se  produit,  ou  si la fin du fichier est atteinte en lecture, le nombre renvoyé est plus
       petit que nbelem et peut même être nul.

       L'indicateur de position du flux est incrémenté du nombre d'octets ayant été lus ou écrits
       avec succès.

       fread()  ne  fait  pas  la différence entre la fin de fichier et une erreur, et l'appelant
       devra utiliser feof(3) et ferror(3) pour le savoir.

ATTRIBUTS

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

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

CONFORMITÉ

       POSIX.1-2001, POSIX.1-2008, C89.

EXEMPLES

       Le programme ci-dessous montre l'utilisation de fread() pour  parcourir  l'exécutable  ELF
       /bin/sh en mode binaire et afficher son code magique et sa classe :

           $ ./a.out
           ELF magic: 0x7f454c46
           Class: 0x02

   Source du programme

       #include <stdio.h>
       #include <stdlib.h>

       #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))

       int
       main(void)
       {
           FILE *fp = fopen("/bin/sh", "rb");
           if (!fp) {
               perror("fopen");
               return EXIT_FAILURE;
           }

           unsigned char buffer[4];

           size_t ret = fread(buffer, ARRAY_SIZE(buffer), sizeof(*buffer), fp);
           if (ret != sizeof(*buffer)) {
               fprintf(stderr, "fread() a échoué : %zu\n", ret);
               exit(EXIT_FAILURE);
           }

           printf("ELF magic: %#04x%02x%02x%02x\n", buffer[0], buffer[1],
                  buffer[2], buffer[3]);

           ret = fread(buffer, 1, 1, fp);
           if (ret != 1) {
               fprintf(stderr, "fread() a échoué : %zu\n", ret);
               exit(EXIT_FAILURE);
           }

           printf("Class: %#04x\n", buffer[0]);

           fclose(fp);

           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       read(2), write(2), feof(3), ferror(3), unlocked_stdio(3)

COLOPHON

       Cette  page  fait partie de la publication 5.10 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 ⟨⟩.