fread()

fread() ist in der stdio definiert, die in C über stdio.h, bzw in C++ über cstdio eingebunden wird.

Funktion

fread() liest ein Datenarray mit einer gegebenen Anzahl von Elementen von einer gegebenen Größe aus dem angegebenen Stream in den Speicher.
Anschließend wird die Schreibposition des Streams um die totale Anzahl gelesener Bytes weitergerückt.

Signatur

#include <stdio.h>
size_t fread (const void * ptr, size_t size, size_t count, FILE * stream );

ptr: Zeiger auf den Speicherbereich, in dem die gelesenen Daten gespeichert werden sollen.
size: Die Größe in Bytes eines einzelnen Blocks.
count: Anzahl der Blöcke, die gelesen werden.
stream: Zeiger auf den Stream, aus dem gelesen wird.

Return Value: Die Anzahl der erfolgreich gelesenen Blöcke.

Fehlerquellen

Es kann passieren, dass nicht alle Elemente gelesen werden können, weil z.B. wenn nicht genügend Elemente im Stream sind. Deswegen sollte der Rückgabewert darauf überprüft werden, ob er der Anzahl zu lesenden Elemente (count) entspricht. Ist der Rückgabewert ein anderer, deutet dies auf einen Fehler hin.

Beispiel

#include <stdio.h>
#include <stdlib.h>
 
struct data {
  int nummer;
  int daten;
};
 
int main (void)
{
  FILE *datei = fopen ("meinedatei.bin","rb");
  struct data Daten[3];
  unsigned int ret = 0;
 
  ret = fread (Daten, sizeof(struct data), 3, datei);
 
  printf("%d\n", ret);
  if (ret != 3) 
    printf ("Hupps, ein Fehler...\n");
  else 
    printf ("Erfolgreich gelesen!\n");
 
  fclose (datei);
  return EXIT_SUCCESS;
}

Um dieses Beispiel auszuprobieren, sollte zuerst das Beispiel der Funktion fwrite() ausgeführt werden.

Siehe auch