假设我使用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都按照对fgetc
或fgetc
的重复调用来指定所有的复合stdio函数。