fread()中的"short item count"是什么意思?

12
当我使用“man fread”命令时,得到了以下内容:

返回值
fread() 和 fwrite() 返回成功读取或写入的项数(而不是字符数)。如果出现错误或到达文件结尾,则返回值是一个短项计数(或零)。

fread() 不区分文件结尾和错误,调用者必须使用 feof(3) 和 ferror(3) 确定发生了哪种情况。

我的问题是如何理解“short item count”。请原谅我的英语水平。为什么这里涉及到“short”类型?能否举一个“short item count”的例子?谢谢。
回答:
“short item count”是指在fread()或fwrite()函数调用中读取或写入的项目数量较少,可能是由于遇到了文件结尾或发生了错误。 这个数量被称为“short”,并且通常是一个整数类型,具体取决于编译器和操作系统的实现。
例如,如果您尝试从一个只有10个项目的文件中读取20个项目,那么fread()函数将只返回值10,这就是所谓的“short item count”。
总之,在使用fread()或fwrite()函数时,需要检查返回值,以确保正确读取或写入了数据。
2个回答

9
“short”在fread手册中的含义并不是指数据类型。
在这种情况下,“short”意味着“少于预期”。如果fread()函数期望读取4个对象,但只读取了3个,则它将返回值3。
我认为手册应该重新编写为:“如果发生错误或到达文件尾部,返回值是在出现错误或EOF之前成功读取或写入的项目数。”

2
同意man手册写得很糟糕,需要重新编写。我知道fread的工作原理,我的英语还不错,但我仍然无法理解它。 - Lundin
那么我应该在哪里提交拉取请求来更改这个呢? - Lars Nyström

6
如果你想要4个,但只有3个,那么你就缺少1个。

2
如果你想要4,但你只有3,fread函数会返回3。那么“short”在哪里呢?如果这个词的意思有任何意义,它应该返回1。但是,这将是一个无意义的API。 - Lundin
@Lundin:相对于4,3很短。措辞没问题。 - Ignacio Vazquez-Abrams
2
你缺少1个,而不是3个。在这种情况下,“short”一词只能指缺失的物品数量。一个讲英语的人会认为“短缺的物品数量”是指你缺少的物品数量,而不是“成功读取的物品计数器”。 - Lundin
你不是缺少3个短的,而是这个3本身就是短的。 - Ignacio Vazquez-Abrams
不管语法是否正确,重要的是读者能否理解此描述。我第一次阅读fread页,尽管我的英语水平还不错,但我还是不得不进行谷歌搜索才能理解其意义。 - bha159

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接