- •10. Файлы
- •Введение
- •10.2. Классификация файлов в турбо-паскале
- •10.3. Объявление файла
- •10.4. Открытие и закрытие файла
- •10.5. Чтение и запись
- •10.6. Текстовые файлы
- •Program Demo; {Вывод на экран чисел из файла}
- •10.7. Нетипизированные файлы
- •10.8. Пример. Программа работы с файлами
- •Фамилия _
- •Фамилия Оценка 1 Оценка 2 Оценка 3
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
Для того, чтобы комментарий в первой строке (’ количество чисел в массиве’) не вызвал ошибки при чтении чисел, надо, чтобы он не был прочитан. Это может быть обеспечено так, как показано в следующей программе на Паскале: