Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

Как закрыть файл

После окончания записи в файл или чтения из файла необходимо его закрыть, то есть прервать связь ме- жду файлом и программой. Это осуществляется с помощью инструкции

fclose(file_pointer);

Закрывая файл, мы получаем гарантию, что вся информация, имевшаяся в буфере, действительно запи- сана в файл. Если выполнение программы заканчивается до закрытия файла, какая-то не попавшая на диск часть информации может остаться в буфере, в результате чего она будет утрачена. Кроме того, не будет надлежащим образом записан символ конца файла, и в следующий раз программа не сможет полу- чить доступ к файлу.

¶a++ae æepcue u+uru æɵuyye+a sneuwpo++ɵu usgawenacwæou "Books-shop".

Pacupocwpa+e+ue, upogaua, uepesauuca ga++on u+uru unu ee ¬acwen 3AMPE[EHª.

O æcex +apyue+uex upoca6a coo6yawa uo agpecy piracy@books-shop.com

Следует добавить, что закрытие файла освобождает указатель, после чего он может быть использован с другим файлом или для выполнения других операций с тем же файлом. В качестве примера предположим, что вы хотите создать файл, записать в него данные, а затем убедиться, что информация записана пра- вильно. Для этого в программе можно использовать структуру, приведенную в Листинге12.1.

Листинг 12.1. Использование одного указателя файла в двух операциях.

FILE *cdfile;

if((cdfile = fopen("CD.DAT", "w")) == NULL)

{

puts("Невозможно открыть файл"); exit();

}

/* Здесь должны располагаться инструкции записи в файл */

fclose(cdfile);

if((cdfile = fopen("CD.DAT", "r")) == NULL)

{

puts("Невозможно открыть файл"); exit();

}

/* В этом месте должны быть записаны инструкции чтения из файла */

fclose(cdfile);

Здесь файл сначала открывается с использованием режима доступа "w", затем в него записывают данные. Во второй раз файл открывается с использованием режима доступа "r", что позволяет прочитать данные и вывести их на экран.

Некоторые компиляторы позволяют обеспечить запись всех данных в файл путем очистки буфера с помо- щью функции

flush()

Эта функция позволяет без закрытия файла очистить буфер и записать все имеющиеся в нем данные на диск или направить их на принтер.

Функции ввода и вывода

Существует несколько способов передачи данных в файл и получения их из файла в зависимости от ис- пользуемой функции:

    • посимвольная запись данных в файл или вывод их на принтер с использованием функции putc()

или fputc();

    • посимвольное чтение данных из файла с использованием функции getc() или fgetc();

    • построчная запись данных в файл или вывод их на принтер с использованием функции fputs();

    • построчное чтение данных из файла с использованием функции fgets();

    • форматированный вывод символов, строк или чисел на диск или на принтер с помощью функции

fprintf();

    • форматированный ввод символов, строк или чисел из файла с помощью функции fscanf();

    • запись целой структуры с использованием функции fwrite();

    • чтение целой структуры с использованием функции fread().