เราได้พูดคุยกันในที่ทำงานเกี่ยวกับสาเหตุที่ fread และ fwrite ใช้ขนาดต่อสมาชิกและนับและส่งคืนจำนวนสมาชิกที่อ่าน / เขียนแทนที่จะใช้แค่บัฟเฟอร์และขนาด การใช้งานเพียงอย่างเดียวที่เราสามารถทำได้คือถ้าคุณต้องการอ่าน / เขียนอาร์เรย์ของโครงสร้างที่ไม่สามารถหารด้วยการจัดตำแหน่งแพลตฟอร์มได้อย่างเท่าเทียมกันและด้วยเหตุนี้จึงได้รับการบุนวม แต่ไม่สามารถใช้ร่วมกันได้เพื่อรับประกันตัวเลือกนี้ ในการออกแบบ
จากFREAD (3) :
ฟังก์ชั่น fread () อ่านองค์ประกอบ nmemb ของข้อมูลแต่ละขนาดไบต์ยาวจากสตรีมที่ชี้ไปที่สตรีมจัดเก็บไว้ในตำแหน่งที่กำหนดโดย ptr
ฟังก์ชัน fwrite () เขียนองค์ประกอบ nmemb ของข้อมูลแต่ละขนาดไบต์ยาวไปยังสตรีมที่สตรีมชี้ไปโดยรับข้อมูลจากตำแหน่งที่กำหนดโดย ptr
fread () และ fwrite () ส่งคืนจำนวนรายการที่อ่านหรือเขียนสำเร็จ (กล่าวคือไม่ใช่จำนวนอักขระ) หากข้อผิดพลาดเกิดขึ้นหรือถึงจุดสิ้นสุดของไฟล์ค่าที่ส่งคืนจะเป็นการนับรายการสั้น ๆ (หรือศูนย์)