Code:
fread(buffer, sizeof(char), sizeof(buffer), stream);
ist nicht gerade schön und auch sehr fehleranfällig.
die beiden size parameter von fread bestimmen wieviele bytes gelesen werden sollen.
in diesem fall geht das gut, weil es sich um chars handelt und die größe somit auch richtig ist (1*4096 = 4096)
wären das jedoch float (also 4 byte pro element) würde das ein problem geben, denn 4*(4096*4) = 65536
sizeof(array) gibt nämlich nicht an, wieviele elemente in einem array sind, sondern wieviele bytes dieses array im speicher belegt.
daher sollte man, wenn man sizeof in verbindung mit arrays verwendet für die anzahl der element folgendes benutzen
Code:
sizeof(buffer)/sizeof(buffer[0]);
_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain