Wir hatten hier bei der Arbeit eine Diskussion darüber, warum fread und fwrite eine Größe pro Mitglied annehmen und die Anzahl der gelesenen / geschriebenen Mitglieder zählen und zurückgeben, anstatt nur einen Puffer und eine Größe zu nehmen. Die einzige Verwendung, die wir finden könnten, ist, wenn Sie ein Array von Strukturen lesen / schreiben möchten, die nicht gleichmäßig durch die Plattformausrichtung teilbar sind und daher aufgefüllt wurden, aber dies kann nicht so häufig sein, dass diese Auswahl gerechtfertigt ist im Design.
Aus FREAD (3) :
Die Funktion fread () liest nmemb-Datenelemente mit einer Größe von jeweils Bytes aus dem Stream, auf den der Stream zeigt, und speichert sie an der von ptr angegebenen Stelle.
Die Funktion fwrite () schreibt nmemb-Datenelemente mit einer Größe von jeweils Byte in den Stream, auf den der Stream zeigt, und erhält sie von der durch ptr angegebenen Position.
fread () und fwrite () geben die Anzahl der erfolgreich gelesenen oder geschriebenen Elemente zurück (dh nicht die Anzahl der Zeichen). Wenn ein Fehler auftritt oder das Dateiende erreicht ist, ist der Rückgabewert eine kurze Anzahl von Elementen (oder Null).