Prowadziliśmy tutaj dyskusję na temat tego, dlaczego fread i fwrite przyjmują rozmiar na członka i liczą i zwracają liczbę elementów członkowskich odczytanych / zapisanych, a nie tylko przyjmować bufor i rozmiar. Jedynym zastosowaniem, jakie możemy wymyślić, jest to, że chcesz odczytać / zapisać tablicę struktur, które nie są równo podzielne przez wyrównanie platformy i dlatego zostały wypełnione, ale to nie może być tak powszechne, aby uzasadniać ten wybór w projektowaniu.
Z FREAD (3) :
Funkcja fread () odczytuje nmemb elementy danych, każdy rozmiar w bajtach, ze strumienia wskazywanego przez stream, przechowując je w lokalizacji podanej przez ptr.
Funkcja fwrite () zapisuje nmemb elementów danych, każdy rozmiar w bajtach, do strumienia wskazywanego przez stream, uzyskując je z lokalizacji podanej przez ptr.
fread () i fwrite () zwracają liczbę pomyślnie odczytanych lub zapisanych elementów (tj. nie liczbę znaków). Jeśli wystąpi błąd lub osiągnięto koniec pliku, zwracaną wartością jest krótka liczba elementów (lub zero).