fread(3) Library Functions Manual fread(3) BEZEICHNUNG fread, fwrite - Ein-/Ausgabe binarer Datenstrome BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include size_t fread(void zeiger[restrict .groesse * .nmemb], size_t groesse, size_t nmemb, FILE *restrict datenstrom); size_t fwrite(const void ptr[restrict .groesse * .nmemb], 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. Fur nicht sperrende Gegenstucke siehe unlocked_stdio(3). RUCKGABEWERT Bei Erfolg geben fread() und fwrite() die Anzahl der geschriebenen oder gelesenen Elemente zuruck. Diese Zahl ist nur gleich der Anzahl der ubertragenen Byte, wenn groesse 1 ist. Falls ein Fehler auftritt oder das Dateiende erreicht ist, wird eine kleinere Zahl von gelesenen Elementen (oder Null) zuruckgegeben. Der Dateipositionsanzeiger fur den Datenstrom wird um die Anzahl der erfolgreich gelesenen oder geschriebenen Bytes vorwartsbewegt. 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) fur eine Erlauterung der in diesem Abschnitt verwandten Ausdrucke. +--------------------------------+-------------------------+-----------+ |Schnittstelle | Attribut | Wert | +--------------------------------+-------------------------+-----------+ |fread(), fwrite() | Multithread-Fahigkeit | MT-Sicher | +--------------------------------+-------------------------+-----------+ STANDARDS C11, POSIX.1-2008. GESCHICHTE POSIX.1-2001, C89. BEISPIELE Das nachfolgende Programm stellt die Verwendung von fread() dar, indem es ein /bin/sh-ELF-Programm im binaren Modus auswertet und dessen Magie und Klasse ausgibt: $ ./a.out ELF-Magie: 0x7f454c46 Klasse: 0x02 Programmquelltext #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() 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) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Martin Schulze , Chris Leick und Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 fread(3)