EOF是否会设置errno?

13 浏览
0 Comments

EOF是否会设置errno?

我总是为系统调用的返回值苦恼 - 它们太不一致了!通常我会检查它们是否为NULL或-1,然后调用perror。然而,对于fgets,手册上写道:

gets()fgets()在成功时返回s,在出错或在读取任何字符之前遇到文件结束时返回NULL

这意味着返回值NULL不一定是错误 - 它也可以是EOF。当到达文件结束时是否设置errno?在这种情况下我还能调用perror吗?

如果不能,那么如何区分调用返回的错误和EOF是常见的方法?我想在错误时使用带有空字符串的perror,在EOF时使用自定义字符串。

0