如果我在 fread() 的 'size' 参数中放入 2 个或更多会怎样?

What if I put 2 or more into 'size' parameter in fread()?

如果我使用:

fread(&buffer, 16384, 1, file); // Read 16384 bytes once?

而不是:

fread(&buffer, 1, 16384, file); // Read a byte 16384 times?

读取纯文本文档文件,会成功吗?有效率吗?

它应该不会影响速度,但会影响您执行部分读取的能力。单个对象作为一个单元读取:

  • 如果你请求一个 16384 字节的对象,而它只能读取 16383 字节,fread() 失败并且你被告知没有读取任何内容(文件指针仍然向前移动不过数量未知)。

  • 如果您要求 16384 个 1 字节对象,但没有达到要求,您会确切知道您得到了多少(这也会告诉您文件指针前进了多远)。

简而言之,如果您想要 16384 字节,少了就是失败,当然,请将其作为一个单元来请求。但通常情况下,你希望在部分读取的情况下处于模糊有用的状态,因此你应该要求它为 16384 个单独的字节。