Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структуры данных_файлы.doc
Скачиваний:
3
Добавлен:
17.04.2019
Размер:
166.91 Кб
Скачать

Последовательные файлы с ограниченным полем.

При рассмотрении последовательного файла видно, что данные в файле разделяются запятыми и любые цепочки заключаются в двойные кавычки (кавычки предохраняют Вас от хлопот с вкрапленными запятыми в цепочке). Рассмотрим формирование и внутреннее представление последовательного файла ADD.BAS:

OPEN "ADD.BAS" FOR OUTPUT AS #1

String$="This is a string of text"

Integer%=1000

Floating!=30000.1234

WRITE #1,String$,Integer%,Floating!

String$="Appol"

Integer%=-32767

Floating!=12345.54296875

WRITE #1,Integer%,String$,Floating!

CLOSE #1

END

Содержимое файла ADD.BAS:

"This is a string of text",1000,30000.1234

-32767,"Appol",12345.54296875

Самым важным здесь является то, что оператор WRITE # записывает данные в том виде, в котором оператор INPUT # хочет их найти. Следующая программа считывает данные из последовательного файла:

OPEN "ADD.BAS" FOR INPUT AS #1

String$="":Integer%=0:Floating!=0

INPUT #1,String$,Integer%,Floating!

PRINT String$,Integer%,Floating!

String$="":Integer%=0:Floating!=0

INPUT #1,Integer%,String$,Floating!

PRINT Integer%,String$,Floating!

CLOSE #1

END

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

Неограниченные последовательные файлы.

Данные в этих файлах представлены так, как они выглядят на экране дисплея или после печати:

OPEN "ADD.BAS" FOR OUTPUT AS #1

String$="This is a string of text"

Integer%=1000

Floating!=30000.1234

PRINT #1,String$,Integer%,Floating!

String$="Appol"

Integer%=-32.767

Floating!=12345.54296875

PRINT #1,USING "+##### & ##.##^^^^;Integer%, String$, Floating!

CLOSE #1

END

Содержимое файла ADD.BAS:

This is a string of text 1000 30000.1234

-32767 Appol 12.35E+03

Если Вы попытаетесь считать данные из этого файла с помощью оператора INPUT #1, String$, Integer%, Floating!, то в строковую переменную будет считано слово This, а затем программа попытается считать числовое значение, наткнется на цепочку is и выдаст ошибку. поэтому применим здесь другие операторы для считывания:

OPEN "ADD.BAS" FOR INPUT AS #1

String$=""

String$=INPUT$(80,1)

PRINT String$

LINE INPUT #1,String$

PRINT String$

CLOSE #1

END

Замечание об операторе Print#, который отличается от оператора Write# тем, что за один раз выводит одну запись, от того сколько переменных в нем указано. Write для каждого указанного в нем выражения формирует отдельную запись. Поэтому при использовании оператора Print необходимо использовать возможность позиционирования переменных. Данный оператор удобно использовать при работе с одной переменной.

Наверно этот оператор лучше использовать для вывода значений на экран и принтер.

Функция INPUT$ - возвращает образ символов, считанных из указанного файла.