Отличный вопрос, и я думаю, что ответ - нет.fopen
должен выделить структуру FILE
, и естественным порядком операций при его реализации будет сначала открыть файл, а затем попытаться выделить FILE
.Таким образом, fopen
- это просто оболочка вокруг fdopen
(или аналогичная функция с некоторыми ведущими подчеркиваниями или еще чем-то для соответствия пространства имен).
Лично я бы вообще не использовал функции stdio
, когда вы заботитесьо состоянии ваших файлов после любого сбоя.Даже если у вас открыт файл, буферизация stdio делает почти невозможным узнать , где произошла ошибка, если функция записи когда-либо возвращает ошибку, и еще более невозможно вернуть ваш файл в пригодное для использования согласованное состояние.