Provided by: manpages-ro-dev_4.21.0-2_all bug

NUME

       fread, fwrite - intrare/ieșire a fluxurilor binare

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

REZUMAT

       #include <stdio.h>

       size_t fread(void ptr[restrict .size * .nmemb],
                    size_t size, size_t nmemb,
                    FILE *restrict stream);
       size_t fwrite(const void ptr[restrict .size * .nmemb],
                    size_t size, size_t nmemb,
                    FILE *restrict stream);

DESCRIERE

       Funcția  fread()  citește  nmemb elemente de date, fiecare cu lungimea de size octeți, din
       fluxul indicat de stream, stocându-le la locația indicată de ptr.

       Funcția fwrite() scrie nmemb elemente de date, fiecare cu o lungime  de  size  octeți,  în
       fluxul indicat de stream, obținându-le din locația dată de ptr.

       Pentru varianta corespondentă fără blocare, a se vedea unlocked_stdio(3).

VALOAREA RETURNATĂ

       În  caz  de  succes, fread() și fwrite() returnează numărul de elemente citite sau scrise.
       Acest număr este egal cu numărul de octeți transferați numai atunci când size este 1. Dacă
       apare  o  eroare  sau  dacă  se ajunge la sfârșitul fișierului, valoarea returnată este un
       număr scurt de elemente (sau zero).

       Indicatorul de poziție al fișierului pentru flux este avansat cu numărul de octeți  citiți
       sau scriși cu succes.

       fread()  nu  face  distincție  între  end-of-file  (sfârșitul  de  fișier)  și eroare, iar
       apelanții trebuie să utilizeze feof(3) și ferror(3) pentru a determina ce a avut loc.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).

       ┌───────────────────────────────────────────────────────────┬───────────────────┬─────────┐
       │InterfațăAtributValoare │
       ├───────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │fread(), fwrite()                                          │ Siguranța firelor │ MT-Safe │
       └───────────────────────────────────────────────────────────┴───────────────────┴─────────┘

STANDARDE

       POSIX.1-2001, POSIX.1-2008, C99.

EXEMPLE

       Programul de mai jos demonstrează utilizarea fread() analizând executabilul /bin/sh ELF în
       modul binar și imprimând numărul magic și clasa acestuia:

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

   Sursa programului

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

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

       int
       main(void)
       {
           FILE           *fp;
           size_t         ret;
           unsigned char  buffer[4];

           fp = fopen("/bin/sh", "rb");
           if (!fp) {
               perror("fopen");
               return EXIT_FAILURE;
           }

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

           printf("numărul magic ELF: %#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 eșuat: %zu\n", ret);
               exit(EXIT_FAILURE);
           }

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

           fclose(fp);

           exit(EXIT_SUCCESS);
       }

CONSULTAȚI ȘI

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

TRADUCERE

       Traducerea  în  limba  română  a  acestui  manual  a  fost  creată  de Remus-Gabriel Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența  publică  generală  GNU
       Versiunea  3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  sau  o  versiune  ulterioară cu
       privire la condiții privind drepturile de autor.  NU se asumă Nicio RESPONSABILITATE.

       Dacă găsiți erori în traducerea acestui  manual,  vă  rugăm  să  trimiteți  un  e-mail  la
       ⟨translation-team-ro@lists.sourceforge.net⟩.