Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответ программирование1.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
294.98 Кб
Скачать

28. Текстовые файлы. Доступ к данным в текстовых файлах. Работа с текстовыми файлами. Описание файлов

В разделе var переменные, используемые для работы с файлами ( файловые переменные ), описываются следующим образом:

var f1,f2: text; {текстовые файлы}

g: file of <тип_элементов_файла>; {типизированные файлы}

in, out: file; {нетипизированные файлы}

Файловая переменная не может быть задана константой.

Пробельные символы

К пробельным символам (присутствующим в файле, но невидимым на экране) относятся:

  • символ горизонтальной табуляции ( #9 );

  • символ перевода строки ( #10 ) (смещение курсора на следующую строку, в той же позиции);

  • символ вертикальной табуляции ( #11 );

  • символ возврата каретки ( #13 ) (смещение курсора на начальную позицию текущей строки; в кодировке UNIX один этот символ служит признаком конца строки);

  • символ конца файла ( #26 );

  • символ пробела ( #32 ).

Замечание: Пара символов #13 и #10 является признаком конца строки текстового файла (в кодировках DOS и Windows).

Поиск специальных пробельных символов (нас интересуют в основном #10, #13 и #26 ) можно осуществлять при помощи стандартных функций:

eof(f) - возвращает значение TRUE, если уже достигнут конец файла f (указатель находится сразу за последним элементом файла), и FALSE в противном случае;

seekeof(f) - возвращает значение TRUE, если "почти" достигнут конец файла f (между указателем и концом файла нет никаких символов, кроме пробельных ), и FALSE в противном случае;

eoln(f) - возвращает значение TRUE, если достигнут конец строки в файле f (указатель находится сразу за последним элементом строки), и FALSE в противном случае;

seekeoln(f) - возвращает значение TRUE, если "почти" достигнут конец строки в файле f (между указателем и концом строки нет никаких символов, кроме пробельных ), иFALSE в противном случае.

flush(var f : text) - Если текстовый файл был открыт на вывод с использованием процедур ReWrite или Append, то вызов Flush очистит буфер файла. Это гарантирует, что все символы, записанные в это время в файл будут насильно записаны на диск. Вызов Flush не имеет никакого эффекта для файлов, открытых на ввод.

settextbuf(var f : text; var buf; bufsize : word) -  Процедура устанавливает буфер ввода/вывода для текстового файла.

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

Текстовый файл - это совокупность строк, разделенных метками конца строки. Сам файл заканчивается меткой конца файла. Доступ к каждой строке возможен лишь последовательно, начиная с первой. Одновременная запись и чтение запрещены.

Чтение из текстового файла:

Read(f, список переменных);

ReadLn(f, список переменных);

Процедуры читают информацию из файла f в переменные. Способ чтения зависит от типа переменных, стоящих в списке. В переменную char помещаются символы из файла. В числовую переменную: пропускаются символы-разделители, начальные пробелы и считывается значение числа до появления следующего разделителя. В переменную типа string помещается количество символов, равное длине строки, но только в том случае, если раньше не встретились символы конца строки или конца файла. Отличие ReadLn от Read в том, что в нем после прочтения данных пропускаются все оставшиеся символы в данной строке, включая метку конца строки. Если список переменных отсутствует, то процедура ReadLn(f) пропускает строку при чтении текстового файла.

Запись в текстовый файл:

Write(f, список переменных);

WriteLn(f, список переменных);

Процедуры записывают информацию в текстовый файл. Способ записи зависит от типа переменных в списке (как и при выводе на экран). Учитывается формат вывода. WriteLn от Write отличается тем, что после записи всех значений из переменных записывает еще и метку конца строки (формируется законченная строка файла).

Добавление информации к концу файла:

Append(f)

Процедура открывает текстовый файл для добавления информации к его концу. Используйте эту процедуру вместо Rewrite.