Nous avons eu une discussion ici au travail concernant le fait que fread() et fwrite() prennent une taille par élément et un compteur et renvoient le nombre d'éléments lus/écrits plutôt que de simplement prendre un tampon et une taille. La seule utilisation que nous avons pu trouver est si vous voulez lire/écrire un tableau de structures qui ne sont pas divisibles de manière égale par l'alignement de la plate-forme et qui ont donc été rembourrées, mais cela ne peut pas être si courant pour justifier ce choix dans la conception.
Depuis fread(3):
La fonction fread() lit nmemb éléments de données, chacun de taille bytes , du flux pointé par stream, les stockant à l'emplacement donné par ptr.
La fonction fwrite() écrit nmemb éléments de données, chacun de taille bytes du flux pointé par stream, 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 ). En cas d'erreur, ou si la fin de fichier est atteinte, la valeur de retour est un court compte d'éléments (ou zéro).
14 votes
Hey c'est une bonne question. j'ai toujours été curieux à ce sujet
2 votes
Veuillez consulter cette discussion : stackoverflow.com/questions/8589425/how-does-fread-really-work