Chúng tôi đã có một cuộc thảo luận tại đây về việc tại sao fread và fwrite lại lấy kích thước cho mỗi thành viên và đếm và trả về số lượng thành viên được đọc / ghi thay vì chỉ lấy bộ đệm và kích thước. Cách sử dụng duy nhất cho nó mà chúng tôi có thể đưa ra là nếu bạn muốn đọc / ghi một mảng cấu trúc không chia hết cho sự liên kết nền tảng và do đó đã được đệm nhưng điều đó không thể phổ biến đến mức đảm bảo sự lựa chọn này trong thiết kế.
Từ FREAD (3) :
Hàm fread () đọc các phần tử nmemb của dữ liệu, mỗi phần tử có kích thước byte dài, từ luồng được trỏ đến từng luồng, lưu trữ chúng tại vị trí được cho bởi ptr.
Hàm fwrite () ghi các phần tử nmemb của dữ liệu, mỗi phần tử có kích thước là byte, vào luồng được trỏ đến theo luồng, lấy chúng từ vị trí được cho bởi ptr.
fread () và fwrite () trả về số lượng mục được đọc hoặc ghi thành công (tức là không phải số ký tự). Nếu xảy ra lỗi hoặc đạt đến phần cuối của tệp, giá trị trả về là số lượng mục ngắn (hoặc bằng không).