Nous avons eu une discussion ici au travail pour savoir pourquoi fread et fwrite prennent une taille par membre et comptent et renvoient le nombre de membres lus / écrits plutôt que de simplement prendre un tampon et une taille. La seule utilisation que nous pourrions trouver est si vous voulez lire / écrire un tableau de structures qui ne sont pas uniformément divisibles par l'alignement de la plate-forme et qui ont donc été remplies mais qui ne peuvent pas être si courantes pour justifier ce choix dans la conception.
De FREAD (3) :
La fonction fread () lit nmemb éléments de données, chaque taille octets de long, à partir du flux pointé par stream, les stockant à l'emplacement donné par ptr.
La fonction fwrite () écrit nmemb éléments de données, chaque taille octets de long, dans le flux pointé par stream, en les obtenant à partir de l'emplacement donné par ptr.
fread () et fwrite () renvoient le nombre d'éléments lus ou écrits avec succès (c'est-à-dire pas le nombre de caractères). Si une erreur se produit ou si la fin de fichier est atteinte, la valeur de retour est un nombre d'éléments courts (ou zéro).