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

6.7. Текстовые файлы

6.7.1. Определение текстового файла

Текстовый файл состоит из строк символов. В конце каждой строки стоит специальный признак - "конец строки". После последней строки файла стоит признак "конец файла".

Заметим, что используемое здесь понятие "строка символов" не относится к данным типа STRING, поскольку отсутствует нулевой байт с информацией о фактической длине строки.

Файловая переменная, связанная с текстовым файлом, объявляется с помощью стандартного типа text, например:

VAR ft : text .

Для работы с текстовыми файлами используются те же процедуры инициализации, что и для обычных файлов, т.е. Assign, Reset, Rewrite . Процедура Reset открывает файл только для чтения, а Rewrite - только для записи, при этом полностью очищая его. При необходимости дозаписи в текстовый файл используется процедура Append(F), где F - файловая переменная, которая открывает файл, но не очищает его, а устанавливает текущий указатель в конец файла.

Для обмена данными с текстовыми файлами используются процедуры Read, ReadLn, Write, WriteLn . Особенность процедуры ReadLn заключается в том, что после ее исполне-ния текущий указатель устанавливается на начало следующей строки даже в том случае, если данные из строки прочитаны не полностью. Процедура WriteLn (в отличие от Write) записывает в файл признак "конец строки".

Процедура Close(F) перед закрытием файла записывает признак "конец файла".

С текстовым файлом связаны булевы функции EoLn(F) EoF(F) .

Функция EoLn возвращает значение TRUE, если текущий указатель достиг конца строки. Соответственно функция EoF возвращает TRUE, если достигнут конец файла.

Отметим, что процедура Seek для текстовых файлов неприменима.

Пример 6.7.1. Имеется текстовый файл 'A.txt', сформированный с помощью текстового редактора. Задание - в тексте программы.

PROGRAM Filtxt;

VAR k, max : integer;

ft : text;

st : STRING;

BEGIN

{ В файле 'A.txt'определить количество строк }

Assign(ft, 'A.txt');

Reset(ft);

k:=0;

WHILE NOT EoF(ft) DO

BEGIN ReadLn(ft);

k:=k+1

END;

WriteLn('Количество строк в файле = ',k);

{ В этом файле определить длину самой длинной строки. }

{ Предполагается, что в строке не более 255 символов }

Reset(ft);

max:=0;

WHILE NOT EoF(ft) DO

BEGIN

ReadLn(ft,st);

k:=Length(st);

IF k>max THEN max:=k

END;

WriteLn('Максимальная длина строки = ',max)

END.

Задачи

6.7.1. В текстовом файле подсчитать количество символов.

6.7.2. Имеется текстовый файл. Переписать в другой файл те строки, которые длиннее предшествующих.

6.7.3. Имеется два текстовых файла. Необходимо из второго файла дозаписать в первый все слова, начинающиеся на букву "А".

6.7.4. В текстовом файле определить длину самой длинной строки. Предполагается, что в файле могут быть строки, содержащие более 255 символов.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]