fread

FREAD(3)                    Linux-Programmierhandbuch                   FREAD(3)



BEZEICHNUNG
       fread, fwrite - Ein-/Ausgabe binärer Datenströme

ÜBERSICHT
       #include <stdio.h>

       size_t fread(void *restrict zeiger, size_t groesse, size_t nmemb,
                    FILE *restrict datenstrom);
       size_t fwrite(const void *restrict zeiger, size_t groesse, size_t nmemb,
                    FILE *restrict datenstrom);

BESCHREIBUNG
       Die Funktion fread() liest nmemb Datenelemente, jeweils groesse Byte
       lang, vom Datenstrom, auf den datenstrom zeigt, und speichert sie an der
       Position, die zeiger angibt.

       Die Funktion fwrite() schreibt nmemb Datenelemente, jeweils groesse Byte
       lang, in den Datenstrom, auf den datenstrom zeigt. Diese stammen von der
       Position, die zeiger angibt.

       Für nicht sperrende Gegenstücke siehe unlocked_stdio(3).

RÜCKGABEWERT
       Bei Erfolg geben fread() und fwrite() die Anzahl der geschriebenen oder
       gelesenen Elemente zurück. Diese Zahl ist nur gleich der Anzahl der
       übertragenen Byte, wenn groesse 1 ist. Falls ein Fehler auftritt oder das
       Dateiende erreicht ist, wird eine kleinere Zahl von gelesenen Elementen
       (oder Null) zurückgegeben.

       Der Dateipositionsanzeiger für den Datenstrom wird um die Anzahl der
       erfolgreich gelesenen oder geschriebenen Bytes vorwärtsbewegt.

       fread() unterscheidet nicht zwischen Dateiende und Fehler, der Aufrufende
       muss feof(3) bzw. ferror(3) benutzen, um herauszufinden was passiert ist.

ATTRIBUTE
       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt
       verwandten Ausdrücke.

       ┌──────────────────────────────────────┬───────────────────────┬─────────┐
       │Schnittstelle                         Attribut              Wert    │
       ├──────────────────────────────────────┼───────────────────────┼─────────┤
       │fread(), fwrite()                     │ Multithread-Fähigkeit │ MT-Safe │
       └──────────────────────────────────────┴───────────────────────┴─────────┘

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

BEISPIELE
       Das nachfolgende Programm stellt die Verwendung von fread() dar, indem es
       ein /bin/sh-ELF-Programm im binären Modus auswertet und dessen Magie und
       Klasse ausgibt:

           $ ./a.out
           ELF-Magie: 0x7f454c46
           Klasse: 0x02

   Programmquelltext

       #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, sizeof(*buffer), ARRAY_SIZE(buffer), fp);
           if (ret != ARRAY_SIZE(buffer)) {
               fprintf(stderr, "fread() fehlgeschlagen: %zu\n", ret);
               exit(EXIT_FAILURE);
           }

           printf("ELF-Magie: %#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() fehlgeschlagen: %zu\n", ret);
               exit(EXIT_FAILURE);
           }

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

           fclose(fp);

           exit(EXIT_SUCCESS);
       }

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

KOLOPHON
       Diese Seite ist Teil der Veröffentlichung 5.13 des Projekts
       Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie
       Fehler gemeldet werden können sowie die aktuelle Version dieser Seite
       finden sich unter https://www.kernel.org/doc/man-pages/.


ÜBERSETZUNG
       Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze
       <joey@infodrom.org>, Chris Leick <c.leick@vollbio.de> und Helge
       Kreutzmann <debian@helgefjell.de> erstellt.

       Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General
       Public License Version 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ oder
       neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG
       übernommen.

       Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
       Sie bitte eine E-Mail an die Mailingliste der Übersetzer ⟨debian-l10n-
       german@lists.debian.org⟩.



GNU                               22. März 2021                         FREAD(3)