====== fread() ====== ''fread()'' ist in der [[c:lib:stdio:start|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 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 #include 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 [[c:lib:stdio:fwrite|fwrite()]] ausgeführt werden. ===== Siehe auch ===== [[c:lib:stdio:start|stdio]]: [[c:lib:stdio:fwrite|fwrite()]]