如果我在 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 个单独的字节。
如果我使用:
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 个单独的字节。