Когда поток stdio
сталкивается с ошибкой (но не EOF), индикатор ошибки потока будет установлен так, что ferror ()
вернет ненулевое значение. Я всегда предполагал, что больше информации доступно в errno
. Но откуда я это знаю?
Документация по некоторым функциям [например. man fopen
под Linux] говорит, что также будет установлено errno
. Однако man fgets
вообще не упоминает errno
. Информационные страницы glibc обнадеживают:
В дополнение к установке индикатора ошибки, связанного с поток, функции, работающие с потоками, также устанавливают `errno' в так же, как и соответствующие низкоуровневые функции, работающие с файлом дескрипторы.
Но я понятия не имею, насколько сильна эта гарантия. Требуется ли это по стандарту C? Что происходит в Visual C/C++?