2017-10-13 44 views
1

说我用fopen成功打开了一个阅读文件,但fgets失败。我希望我的函数适当地设置errno。什么是fgets失败时使用的最准确的errno val?

有许多与文件操作相关的errno vals,但没有一个显示为“在阅读此内容时发生了什么”。 fgets也不会设置errno。

从已经打开的文件中读取故障时使用的最接近的errno值是多少?

+0

为什么'fgets()'失败? – Barmar

+1

'fgets()'失败的正常原因是因为你在EOF。这不是一个真正的错误,没有理由设置“errno”。 – Barmar

+0

@Barmar fgets不失败,但其文档说明它可以。我的程序中的每一个其他执行路径都使用errno进行通信,所以我希望在此尽可能接近未来的潜在故障。 – DeepDeadpool

回答

1

尽管C标准本身很少要求设置errno,假设您使用的是POSIX或类似POSIX的系统,fgets已经将errno设置为适合您的值。请参阅规范fgets

其中规定,它可能会因任何为fgetc定义的原因:

它的原因这样做是因为C和POSIX都指定了所有的在对fgetcfputc的重复呼叫方面,复合stdio功能。

2

如果你的实现定义了它,你可以使用EIOPOSIXEIO定义为“输入/输出错误”。

相关问题