用于 fgets 失败的最准确的 errno val 是什么?

What is the most accurate errno val to use for fgets failures?

假设我使用 fopen 成功打开文件进行读取,但 fgets 失败。我希望我的函数适当地设置 errno。

有许多与文件操作相关的错误码,但 none 对 "something happened while reading this." 来说似乎是明确的。 fgets 也不设置 errno.

用于读取已打开文件失败的最接近的 errno 值是多少?

如果您的实现定义了它,您可以使用 EIOPOSIXEIO 定义为 "Input/output error"。

虽然 C 标准本身很少强制设置 errno,但假设您使用的是 POSIX 或 POSIX 类系统,fgets 将已经设置errno 到适合您的值。请参阅 fgets 的规范:

指定它可能因 fgetc 定义的任何原因而失败:

这样做的原因是 C 和 POSIX 都根据对 fgetcfputc.

的重复调用指定了所有复合 stdio 函数