假设我使用fopen成功打开一个文件进行读取,但fgets失败。我想让我的函数适当地设置errno。
有许多与文件操作相关联的errno vals,但没有一个似乎明确表示“读取此文件时发生了什么事”。fgets也不设置errno。
从已打开的文件读取失败时,最接近的errno值是什么?

最佳答案

虽然C标准本身很少要求设置errno,但假设您是在POSIX或类似POSIX的系统上,fgets已经为您设置了一个合适的值。请参阅errno规范:
http://pubs.opengroup.org/onlinepubs/9699919799/functions/fgets.html
它指定它可能由于为fgets定义的任何原因而失败:
http://pubs.opengroup.org/onlinepubs/9699919799/functions/fgetc.html
这样做的原因是C和POSIX都按照对fgetcfgetc的重复调用来指定所有的复合stdio函数。

10-08 08:44
查看更多