Abbiamo discusso qui al lavoro sul motivo per cui fread e fwrite prendono una dimensione per membro e contano e restituiscono il numero di membri letti / scritti piuttosto che prendere solo un buffer e una dimensione. L'unico uso che potremmo inventare è se vuoi leggere / scrivere un array di strutture che non sono uniformemente divisibili dall'allineamento della piattaforma e quindi sono state riempite ma non può essere così comune da giustificare questa scelta nel design.
Da FREAD (3) :
La funzione fread () legge nmemb elementi di dati, ogni dimensione byte, dallo stream puntato da stream, memorizzandoli nella posizione data da ptr.
La funzione fwrite () scrive elementi di dati nmemb, di ogni dimensione byte, nello stream puntato da stream, ottenendoli dalla posizione data da ptr.
fread () e fwrite () restituiscono il numero di elementi letti o scritti con successo (cioè, non il numero di caratteri). Se si verifica un errore o viene raggiunta la fine del file, il valore restituito è un conteggio di elementi brevi (o zero).