Ми тут на роботі обговорили, чому fread та fwrite беруть розмір для кожного члена та підраховують та повертають кількість прочитаних / написаних членів, а не просто беручи буфер та розмір. Єдине використання для нього, яке ми могли б придумати, це якщо ви хочете прочитати / записати масив структур, які не рівномірно діляться на вирівнюванні платформи і, отже, були забиті, але це не може бути настільки загальним, щоб виправдати цей вибір в дизайні.
З FREAD (3) :
Функція fread () зчитує елементи nmemb даних, довжиною кожного байта, з потоку, на який вказує потік, зберігаючи їх у місці, заданому ptr.
Функція fwrite () записує елементи nmemb даних довжиною кожного байту в потік, на який вказує потік, отримуючи їх із розташування, заданого ptr.
fread () та fwrite () повертають кількість успішно прочитаних чи записаних елементів (тобто не кількість символів). Якщо виникає помилка або досягається кінець файлу, повертається значення - короткий підрахунок (або нуль).