Jak pewnie wszyscy wiecie prototyp fread() wygląda tak:
size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream);
i gdy chcemy odczytać np. 10 bajtów to możemy to zrobić tak, że:
size = 10; nitems = 1;
size = 1; nitems = 10;
size = 5; nitems = 2;
etc... etc...
Nie jest to bez różnicy, gdyż funkcja fread() zwraca liczbę odczytanych pełnych bloków o rozmiarze size, ale odczytuje również tą "niepełną" cząstkę bloku do buforu.
I teraz moje 2 pytania dla speców od OSów:
- czy na wszystkich obecnie stosowanych platformach jest odczytywany ten niepełny blok?
- czy na obcnie stosowanych platformach ma to jakieś znaczenie optymalizacyjne, czy i tak jest to buforowane przez OS i nie ma znaczenia?
Opolski Portal Programistyczny
http://programowanie.opole.pl