EOF是否会设置errno?
我总是为系统调用的返回值苦恼 - 它们太不一致了!通常我会检查它们是否为NULL或-1,然后调用perror
。然而,对于fgets
,手册上写道:
gets()
和fgets()
在成功时返回s,在出错或在读取任何字符之前遇到文件结束时返回NULL
。
这意味着返回值NULL
不一定是错误 - 它也可以是EOF。当到达文件结束时是否设置errno?在这种情况下我还能调用perror
吗?
如果不能,那么如何区分调用返回的错误和EOF是常见的方法?我想在错误时使用带有空字符串的perror
,在EOF时使用自定义字符串。