<stdio.h>
中的 fread()
函数的工作原理,我对该函数的返回值感到困惑。在 man 手册中,它说:
请问有人能够解释一下在这个语境中返回值
成功时,fread()
和fwrite()
返回已读或已写入项的数量。 只有在 size 为 1 时,此数量等于传输的字节数。 如果发生错误或到达文件的结尾,则返回值是短项目计数(或零)。
fread()
不区分文件结束和错误,调用者必须使用feof(3)
和ferror(3)
来确定哪一个发生了。
number of items read or written
是什么意思吗?同时,是否有人可以提供一些示例返回值及其含义?回答:本文讨论了
fread()
函数的返回值。成功时,fread()
返回已读取项的数量。如果 size 为 1,则此数量等于传输的字节数。如果发生错误或到达文件的结尾,则返回值是短项目计数(或零)。在这个语境中,“items” 指的是数据块的数量,每个数据块的大小由参数 size 指定。例如,如果我们使用 fread(buffer, sizeof(int), 10, fp)
从文件中读取 10 个 int 值,那么如果成功读取,则返回值将是 10,表示已经读取了 10 个 int 值。如果遇到了错误或在文件末尾处停止读取,则返回值可能小于 10。
fread()
函数读取N * K
个字节,其中N
是每个元素的字节数,总共将读取K
个元素。理想情况下,如果没有发生错误,则会返回K
。如果发生错误或文件结束条件,则可能读取少于K
个元素,在这种情况下,将返回小于K
的数字。 - The Paramagnetic Croissant