Требуется ли fclose, если fopen не удалось?

рассмотрим приведенный ниже фрагмент кода.

{
....
FILE *fptr = fopen("file_that_does_not_exist","r");
...
}

здесь, если fopen не удается, нам еще нужно вызвать fclose() для некоторой очистки?

Ответ 1

Его простой друг, я имею в виду, просто представьте себе... Вам нужно выключить компьютер, даже если он не загружается....: D

Точно так же, как вам не нужно закройте файл, который вы на самом деле никогда открыт.

Некоторые дополнительные советы: fclose используется только ради освобождения файла, чтобы он мог использоваться каким-либо другим приложением или модулем, поскольку он не является ресурсом, доступным для совместного использования. Кроме того, fclose означает, что теперь вы освобождаете указатель, который используете, и можете использовать его для любого другого файла.

Ответ 2

Нет, поскольку fopen() возвращает 0, что является недопустимым дескриптором файла. fclose() может даже сбой, если вы попытаетесь это сделать.

Ответ 3

Нет. Это не обязательно. Во-первых, вы ничего не открывали, поэтому вам не нужно закрывать его.

Ответ 4

Нет. Вы не можете закрыть двери, которые не открываются. Если преуспеть, fopen возвращает указатель на открытый файл и имеет смысл передать это значение в fclose.