проверьте, не работает ли fclose (), и верните специфицированную c ошибку - PullRequest
2 голосов
/ 07 мая 2020

Итак, я безуспешно пытался найти ответ на этот вопрос.

Я знаю, что делать и как управлять таким случаем - используя fluss / NULL et c. потом. Но проверить это для меня сложно.

Итак, в основном:

open some file(successfully) - let's call the pointer: file.
after some code running...
fclose(file);

Теперь, как я могу проверить после (до того, как это тоже вариант) закрытия файла - что это действительно произошло?

В каком состоянии? По запросу мне нужно обработать этот случай, напечатав некоторые конкретные c ошибки.

1 Ответ

3 голосов
/ 07 мая 2020

Вы можете использовать следующий фрагмент:

#include <errno.h> 

if(fclose(file) != 0)
{
    fprintf(stderr, "Error closing file: %s", strerror(errno));
}

На страницах руководства мы видим, что ошибка при закрытии файла с помощью fclose() устанавливает для глобальной переменной errno значение, указывающее, какая ошибка произошло. Функция strerror() принимает это значение errno и выводит строку, чтобы помочь указать, в чем была ошибка на самом деле.

...