FILE * Это указатель на структуру FILE, когда вы вызываете fclose (), это уничтожит / освободит структуру FILE, но не изменит значение FILE * указатель означает, что он все еще имеет адрес этой структуры FILE, которая сейчас невыходы.
То же самое происходит с любым указателем, полученным с помощью malloc
int a malloc(10);
free(a);
все равно a не будет NULL
, в большинстве случаев я всегда делаю это
free(a);
a=NULL;
Редактировать: вы не можете проверить, закрыто ли оно / освобождено в любое время.просто чтобы убедиться, что вы можете присвоить ему значение NULL после free / fclose, чтобы вы могли проверить его значение NULL или нет и продолжить.