Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава10 задание.doc
Скачиваний:
2
Добавлен:
29.08.2019
Размер:
108.03 Кб
Скачать

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

В отличие от типизированных файлов, о которых речь шла выше, работа с текстовыми файлами несколько отличается. Рассмотрим основные из них.

  • Во-первых, структура текстового файла, размещенного на внешнем устройстве (например, на магнитном диске), имеет следующий вид:

код символа

код символа

. . .

Eoln

код символа

код символа

. . .

код символа

Eoln

код символа

Eoln

код символа

код символа

. . .

код символа

код символа

Eoln

код символа

код символа

. . .

код символа

Eoln

Здесь Eoln – код конца строки (конца элемента файла). В файловой системе MS DOS конец строки кодируется двумя байтами: 0D (возврат каретки) и 0A. Приведем пример представления нескольких строк в текстовом файле в системе MS DOS:

Текст

первая

третья

четвертая

Коды

AF A5 E0 A2 A0 EF OD OA

OD OA

E2 E0 A5 E2 EC E5 0D 0A

EF A5 E2 A2 A5 E0 E2 A0 EF OD OA

№ строки

1

2

3

4

Здесь вторая строка пустая. Она представлена только символами {0D 0A} – конец строки.

  • Во- вторых, процедуры чтения и записи имеют следующую структуру

read(<ф.п.>,< список ввода >);

readln(<ф.п.>,< список ввода >);

write(<ф.п.>,< список вывода >);

writeln(<ф.п.>,< список вывода >);

Здесь список ввода и список вывода – последовательность элементов через запятую. Правила построения списков изложены в разделе «Кодирование вычислительных операций», и здесь повторяться не будут.

  • В-третьих, предусмотрены по две функции для операции ввода и вывода из текстового файла – read (write) и readln(writeln). Их отличие заключается в следующем:

  • После выполнения функций readln и writeln «окно файла» перемещается на начало следующей строки файла (строка – элемент текстового файла); при этом, если в текущей строке остается неиспользованной некоторая часть информации, она не обрабатывается.

  • После выполнения функций read и write «окно файла» остается направленным на ту же самую строку файла; только указатель позиции в ней смещается вправо, так что следующая операция чтения (записи) начнется с обработки текущей строки, начиная с позиции указателя.

  • Если при чтении из файла строка заканчивается, а список ввода остается не удовлетворенным до конца, «окно файла» автоматически будет перемещено на следующую строку, и ее сканирование продолжится.

Проиллюстрируем на примере специфику работы с текстовым файлом.

Пусть имеется текстовый файл ’input.txt’ (см. ниже), в котором содержится входные данные для массива целых чисел:

количество элементов = 5

э

5 количество чисел в массиве

12 -3 5

70

65

лементы : {12, -3, 5, 70, 65}

Для того, чтобы комментарий в первой строке (’ количество чисел в массиве’) не вызвал ошибки при чтении чисел, надо, чтобы он не был прочитан. Это может быть обеспечено так, как показано в следующей программе на Паскале: