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

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.

       ┌───────────────────────────────────────────────────────┬───────────────────────┬─────────┐
       │SchnittstelleAttributWert    │
       ├───────────────────────────────────────────────────────┼───────────────────────┼─────────┤
       │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⟩.