fread
|
Definiert in Header
<stdio.h>
|
||
| (bis C99) | ||
| (seit C99) | ||
Liest bis zu count Objekte in das Array buffer aus dem gegebenen Eingabestrom stream ein, als ob fgetc size Mal für jedes Objekt aufgerufen würde, und speichert die Ergebnisse in der erhaltenen Reihenfolge in den aufeinanderfolgenden Positionen von buffer , das als ein Array von unsigned char reinterpretiert wird. Die Dateipositionsanzeige für den Strom wird um die Anzahl der gelesenen Zeichen vorgerückt.
Wenn ein Fehler auftritt, ist der resultierende Wert des Dateipositionsindikators für den Stream unbestimmt. Wenn ein teilweises Element gelesen wird, ist sein Wert unbestimmt.
Inhaltsverzeichnis |
Parameter
| buffer | - | Zeiger auf das Array, in dem die gelesenen Objekte gespeichert werden |
| size | - | Größe jedes Objekts in Bytes |
| count | - | Anzahl der zu lesenden Objekte |
| stream | - | der zu lesende Stream |
Rückgabewert
Anzahl der erfolgreich gelesenen Objekte, was weniger sein kann als count falls ein Fehler oder Dateiende-Bedingung auftritt.
Wenn
size
oder
count
null ist,
gibt
fread
null zurück und führt keine weitere Aktion aus.
fread
unterscheidet nicht zwischen Dateiende und Fehler, und Aufrufer müssen
feof
und
ferror
verwenden, um zu bestimmen, was aufgetreten ist.
Beispiel
#include <stdio.h> enum { SIZE = 5 }; int main(void) { const double a[SIZE] = {1.0, 2.0, 3.0, 4.0, 5.0}; printf("Array has size %ld bytes, element size: %ld\n", sizeof a, sizeof *a); FILE *fp = fopen("test.bin", "wb"); // must use binary mode fwrite(a, sizeof *a, SIZE, fp); // writes an array of doubles fclose(fp); double b[SIZE]; fp = fopen("test.bin","rb"); const size_t ret_code = fread(b, sizeof b[0], SIZE, fp); // reads an array of doubles if (ret_code == SIZE) { printf("Array at %p read successfully, contents:\n", (void*)&a); for (int n = 0; n != SIZE; ++n) printf("%f ", b[n]); putchar('\n'); } else // error handling { if (feof(fp)) printf("Error reading test.bin: unexpected end of file\n"); else if (ferror(fp)) perror("Error reading test.bin"); } fclose(fp); }
Mögliche Ausgabe:
Array has size 40 bytes, element size: 8 Array at 0x1337f00d6960 read successfully, contents: 1.000000 2.000000 3.000000 4.000000 5.000000
Referenzen
- C23-Standard (ISO/IEC 9899:2024):
-
- 7.21.8.1 Die fread-Funktion (S.: TBD)
- C17-Standard (ISO/IEC 9899:2018):
-
- 7.21.8.1 Die fread-Funktion (S: 243-244)
- C11-Standard (ISO/IEC 9899:2011):
-
- 7.21.8.1 Die fread-Funktion (S: 335)
- C99-Standard (ISO/IEC 9899:1999):
-
- 7.19.8.1 Die fread-Funktion (S: 301)
- C89/C90 Standard (ISO/IEC 9899:1990):
-
- 4.9.8.1 Die fread-Funktion
Siehe auch
|
(C11)
(C11)
(C11)
|
liest formatierten Input von
stdin
, einem Dateistrom oder einem Puffer
(Funktion) |
|
liest eine Zeichenkette aus einem Dateistrom
(Funktion) |
|
|
schreibt in eine Datei
(Funktion) |
|
|
C++-Dokumentation
für
fread
|
|