fread(3) Library Functions Manual fread(3) NUME fread, fwrite - intrare/ieire a fluxurilor binare BIBLIOTECA Biblioteca C standard (libc, -lc) REZUMAT #include 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 Funcia fread() citete nmemb elemente de date, fiecare cu lungimea de size octei, din fluxul indicat de stream, stocandu-le la locaia indicata de ptr. Funcia fwrite() scrie nmemb elemente de date, fiecare cu o lungime de size octei, in fluxul indicat de stream, obinandu-le din locaia data de ptr. Pentru varianta corespondenta fara blocare, a se vedea unlocked_stdio(3). VALOAREA RETURNATA In caz de succes, fread() i fwrite() returneaza numarul de elemente citite sau scrise. Acest numar este egal cu numarul de octei transferai numai atunci cand size este 1. Daca apare o eroare sau daca se ajunge la sfaritul fiierului, valoarea returnata este un numar scurt de elemente (sau zero). Indicatorul de poziie al fiierului pentru flux este avansat cu numarul de octei citii sau scrii cu succes. fread() nu face distincie intre end-of-file (sfaritul de fiier) i eroare, iar apelanii trebuie sa utilizeze feof(3) i ferror(3) pentru a determina ce a avut loc. ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |fread(), fwrite() | Sigurana firelor | MT-Safe | +--------------------------------------+---------------------+---------+ STANDARDE C11, POSIX.1-2008. ISTORIC POSIX.1-2001, C89. EXEMPLE Programul de mai jos demonstreaza utilizarea fread() analizand executabilul /bin/sh ELF in modul binar i imprimand numarul magic i clasa acestuia: $ ./a.out ELF magic: 0x7f454c46 Class: 0x02 Sursa programului #include #include #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 euat: %zu\n", ret); exit(EXIT_FAILURE); } printf("numarul 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 euat: %zu\n", ret); exit(EXIT_FAILURE); } printf("Clasa: %#04x\n", buffer[0]); fclose(fp); exit(EXIT_SUCCESS); } CONSULTAI I read(2), write(2), feof(3), ferror(3), unlocked_stdio(3) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.06 31 octombrie 2023 fread(3)