fclose, _fcloseall
Закрывает поток (fclose) или закрывает все открытые потоки (_fcloseall).
int fclose(
FILE *stream
);
int _fcloseall( void );
Параметры
- stream
Указатель на структуру FILE.
Возвращаемое значение
fclose возвращает 0, если поток успешно закрыт. _fcloseall возвращает общее число закрытых потоков. Обе функции возвращают EOF для указания ошибки.
Заметки
Функция fclose закрывает stream. Если параметр stream имеет значение NULL, вызывается обработчик недопустимого параметра, как описано в разделе Проверка параметров. Если выполнение может быть продолжено, то fclose устанавливает errno в EINVAL и возвращает EOF. Рекомендуется, всегда проверять указатель stream до вызова этой функции.
См. раздел _doserrno, errno, _sys_errlist, and _sys_nerr для дополнительных сведений по этим и другим кодам возврата.
Функция _fcloseall закрывает все открытые потоки, кроме stdin, stdout, stderr (и, в MS-DOS, _stdaux и _stdprn). Она также закрывает и удаляет все временные файлы, созданные tmpfile. В обеих функциях все буферы, связанные с потоком, сбрасываются до закрытия. Размещенные системой буферы освобождаются, когда закрывается поток. Буферы, назначенные пользователем с помощью функций setbuf и setvbuf, не освобождаются автоматически.
Замечание: Когда эти функции используются, чтобы закрыть поток, основной идентификатор файла и системный дескриптор файла (или сокет) закрываются, как и поток. Таким образом, если файл был изначально открыт как дескриптор файла или идентификатор файла и закрыт с fclose, не следует дополнительно вызывать _close, чтобы закрыть идентификатор файла; не вызывайте функцию Win32 CloseHandle, чтобы закрыть дескриптор файла.
fclose и _fcloseall содержат код для защиты от влияния других потоков. Для неблокирующей версии fclose см. _fclose_nolock.
Требования
Функция |
Обязательный заголовок |
---|---|
fclose |
<stdio.h> |
_fcloseall |
<stdio.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость во введении.
Пример
См. пример для fopen.