Практика программирования (Бейсик, Си, Паскаль)



         

Основные типы файлов в системе QBasic - часть 2


Программа 7_01.bas

CLS : DEFINT A-Z: А$="Строка" OPEN "bas_txt"

FOR OUTPUT AS #1 FOR J=l TO 10

PRINT #1,A$;J,J*2

PRINT A$;J,J*2

NEXT J

CLOSE #1

PRINT

OPEN "bas_txt"

FOR INPUT AS #2

FOR J=l TO 10

INPUT #2,B$,K1,K2

PRINT B$;K1,K2

NEXT J

CLOSE #2

END

Если ограничиться только первой половиной программы, которая записывает в дисковый файл bas_txt 10 строк и попутно выдает на экран содержимое этих строк, то кажется, что все в порядке. Содержимое файла bas_txt, которое можно увидеть, нажав клавишу F3, в точности повторяет ту информацию, которая отражена на экране:

Строка 1 2

Строка 2 4

Строка 3 6

Строка 4 8

Строка 5 10

Строка 6 12

Строка 7 14

Строка 8 16

Строка 9 18

Строка 10 20

Один пробел после слова строка образовался потому, что в теле оператора PRINT разделитель "точка с запятой" после текста не изменяет текущую позицию выводной строки, но записываемые числа положительны и вместо знака "+" мы видим пробел. Вторые числа в каждой строке начинаются с 15-й позиции (там тоже находится пробел вместо знака "+"). Этот переход в начало очередной зоны вывода вызван разделителем "запятая" в списке оператора PRINT. Если переключиться в режим просмотра шестнадцатеричной информации (F3 -> F4), то можно заметить дополнительные детали: однозначные числа представлены однобайтовыми кодами ASCII (1 -> 31, 2 -> —> 32, ...), а двузначные — двухбайтовыми (10 —> 3130, 12 -> 3132, ...). Кроме того, каждая строка завершается двухбайтовым признаком конца строки -ODOA. Это означает, что при выводе числовые данные были переведены в символьный формат, а каждая порция вывода была дополнена управляющими кодами Возврат каретки + Перевод строки.

Действие второй половины программы вызывает недоумение. Во-первых, на экране появляется сообщение input paste end of file, которое свидетельствует о попытке чтения после исчерпания данных в файле. Во-вторых, переключившись на экран пользователя, вместо ожидавшихся строк с одним словом и двумя числами в каждой мы видим совсем не то:




Содержание  Назад  Вперед