Закрытие файла

Связь потока с файлом уничтожается с помощью операции закрытия. При этом всё содержимое буфера сбрасывается во внешнее устройство. При необходимости информация дописывается до создания полного сектора. Это так называемая очистка буфера. Файл может быть закрыт и автоматически после завершения программы. Но лучше это сделать самому с помощью функции fclose, когда файл больше не нужен. Дело в том, что некоторые события, например, выключение компьютера до завершения программы, могут помешать записи буфера на диск. Кроме этого, существует ограничение на количество одновременно открытых файлов. Не выполнив закрытие файла, например, после его созданиия, мы не всегда сможем открыть его повторно для работы в другом режиме, например, для чтения.

Функция int fclose(FILE *stream) выполняет следующие действия:

выполняет системные операции по закрытию файла, связанного с указанным потоком;

сохраняет в файле данные дискового буфера, если выполняли запись в файл, то есть очищает буфер;

освобождает память, выделенную для буфера;

освобождает оперативную память, зарезервированную функцией fopen под структуру типа FILE. то есть освобождает блок управления файлом;

разрывает связь потока с файлом.

В случае успешного выполнения этих действий функция закрытия файла возвращает 0. В противном случае возвращается ненулевое значение. Поэтому можно записать, например, так: if (fclose(fp)) printf (“\nClosing file: error”);

Если надо закрыть все открытые на данный момент файлы, то необходимо использовать функцию int fcloseall();. Она закрывает все открытые потоки, кроме стандартных stdin, stdout, stdprn и других.

Работа с текстовым файлом


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: