我们在工作中讨论了为什么fread()和fwrite()需要按成员大小和数量读取/写入,并返回读取/写入的成员数,而不是只需一个缓冲区和大小。我们能想到唯一的用途是,如果您想要读取/写入一个数组,其中的结构体并非平台对齐方式刚好整除,因此已经填充,但这种情况不能如此常见以至于需要这种设计选择。
来自fread(3):
函数fread()从指向流的指针读取nmemb个大小为size字节的数据元素,并将它们存储在由ptr给定的位置。
函数fwrite()将nmemb个大小为size字节的数据元素从ptr给定的位置写入到指向流的指针,
fread()和fwrite()返回成功读取或写入的项目数(即不是字符数)。 如果发生错误或到达文件尾,则返回值为短项计数(或零)。