我们在这里讨论了为什么fread和fwrite为每个成员计算一个大小并计算并返回读/写成员的数量,而不仅仅是采用缓冲区和大小.我们可以想到的唯一用途是,如果你想读/写一个结构数组,这些结构不能被平台对齐整除,因此已被填充,但这并不能保证这一选择在设计中.
来自FREAD(3):
函数fread()从流指向的流中读取数据的nmemb元素,每个数据字节长,将它们存储在ptr给定的位置.
函数fwrite()将每个大小字节长的数据的nmemb元素写入stream指向的流,从ptr给出的位置获取它们.
fread()和fwrite()返回成功读取或写入的项目数(即不是字符数).如果发生错误或达到文件结尾,则返回值为短项目计数(或零).
声明fread如下:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
Run Code Online (Sandbox Code Playgroud)
问题是:两个这样的调用的阅读性能是否存在差异fread:
char a[1000];
Run Code Online (Sandbox Code Playgroud)
fread(a, 1, 1000, stdin);fread(a, 1000, 1, stdin);它会读取1000字节一次,每次?