fread
| Definiert in Header <stdio.h> |
||
| (bis C99) | ||
| (seit C99) | ||
Liest bis zu Anzahl Objekte in das Array Puffer aus dem gegebenen Eingabestrom Strom, als ob durch Aufruf von fgetc Größe Mal für jedes Objekt, und speichert die Ergebnisse in der erhaltenen Reihenfolge in den aufeinanderfolgenden Positionen von Puffer, der als Array von unsigned char neu interpretiert wird. Der Dateipositionierungsanzeiger für den Strom wird um die Anzahl der gelesenen Zeichen vorgerückt.
Wenn ein Fehler auftritt, ist der resultierende Wert des Dateipositionierungsanzeigers für den Strom unbestimmt. Wenn ein Teil eines Elements gelesen wird, ist dessen Wert unbestimmt.
Inhalt |
[edit] Parameter
| buffer | - | Zeiger auf das Array, in dem die gelesenen Objekte gespeichert werden |
| size | - | Größe jedes Objekts in Bytes |
| zählt | - | die Anzahl der zu lesenden Objekte |
| stream | - | der zu lesende Strom |
[edit] Rückgabewert
Anzahl der erfolgreich gelesenen Objekte, die kleiner als Anzahl sein kann, wenn ein Fehler oder eine End-of-File-Bedingung auftritt.
Wenn Größe oder Anzahl null ist, gibt fread null zurück und führt keine weiteren Aktionen aus.
fread unterscheidet nicht zwischen End-of-File und Fehler, und Aufrufer müssen feof und ferror verwenden, um festzustellen, welches aufgetreten ist.
[edit] 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
[edit] Referenzen
- C23-Standard (ISO/IEC 9899:2024)
- 7.21.8.1 Die Funktion fread (p: TBD)
- C17-Standard (ISO/IEC 9899:2018)
- 7.21.8.1 Die Funktion fread (p: 243-244)
- C11-Standard (ISO/IEC 9899:2011)
- 7.21.8.1 Die Funktion fread (p: 335)
- C99-Standard (ISO/IEC 9899:1999)
- 7.19.8.1 Die Funktion fread (p: 301)
- C89/C90-Standard (ISO/IEC 9899:1990)
- 4.9.8.1 Die Funktion fread
[edit] Siehe auch
| (C11)(C11)(C11) |
liest formatierte Eingaben aus stdin, einem Dateistream oder einem Puffer (Funktion) |
| liest einen Zeichenstring aus einem Dateistream (Funktion) | |
| schreibt in eine Datei (Funktion) | |
| C++ Dokumentation für fread
| |