什么是fgets失败时使用的最准确的errno val?
问题描述:
说我用fopen成功打开了一个阅读文件,但fgets失败。我希望我的函数适当地设置errno。什么是fgets失败时使用的最准确的errno val?
有许多与文件操作相关的errno vals,但没有一个显示为“在阅读此内容时发生了什么”。 fgets也不会设置errno。
从已经打开的文件中读取故障时使用的最接近的errno值是多少?
答
尽管C标准本身很少要求设置errno
,假设您使用的是POSIX或类似POSIX的系统,fgets
已经将errno
设置为适合您的值。请参阅规范fgets
:
其中规定,它可能会因任何为fgetc
定义的原因:
它的原因这样做是因为C和POSIX都指定了所有的在对fgetc
或fputc
的重复呼叫方面,复合stdio功能。
为什么'fgets()'失败? – Barmar
'fgets()'失败的正常原因是因为你在EOF。这不是一个真正的错误,没有理由设置“errno”。 – Barmar
@Barmar fgets不失败,但其文档说明它可以。我的程序中的每一个其他执行路径都使用errno进行通信,所以我希望在此尽可能接近未来的潜在故障。 – DeepDeadpool