阅读 这里 的fread
文档时,解释说在void *ptr
之后的两个参数相乘以确定要读/写入文件中的字节数。下面是链接给出的fread
函数头:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
除了函数返回的值之外,调用以下每个函数是否存在行为或性能差异:
// assume arr is an int[SOME_LARGE_NUMBER] and fp is a FILE*
fread(arr, sizeof(arr), 1, fp);
fread(arr, sizeof(arr) / sizeof(int), sizeof(int), fp);
fread(arr, sizeof(int), sizeof(arr) / sizeof(int), fp);
fread(arr, 1, sizeof(arr), fp);
哪一种方法通常是最佳实践?或者更一般的问题是,在任何给定的情况下,我如何决定为每个参数指定什么? 编辑 澄清一下,我并不是在询问一个参数而不是两个参数的理由,我是在询问在任何给定情况下如何决定传递给参数的内容。Massimiliano在评论中提供的这个答案只提供了两个具体的例子,并没有充分解释为什么会发生这种行为。
fputc
进行工作”,这可能最初是正确的,但很难相信在21世纪仍然适用。 - Jongware