Стандартные текстовые файлы

В любой программе считаются уже описанными и открытыми два текстовых файла, предназначенные для обмена со стандартными устройствами ввода-вывода. При вводе это файл Input, связанный с клавиатурой, при выводе – Output, – монитор.

Эти файлы рассматриваются как параметры по умолчанию в операциях работы с текстовыми файлами, когда файл явно не указан. Таким образом:

Write (CH) соответствует Write (Output,CH);

Read (CH) соответствует Read (Input,CH);

WriteLn соответствует WriteLn (Output);

ReadLn соответствует ReadLn (Input);

EOF соответствует EOF (Input);

EOLn соответствует EOLn (Input).

В соответствии с общими правилами MS-DOS стандартные файлы могут быть переназначены, то есть связаны с другими устройствами или дисковыми файлами. Для этой цели можно использовать процедуру Assign, например:

Assign (Output, ‘myfile.out’);

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

При вводе и выводе числовых данных (как и других констант простых типов) в текстовый файл они представляются в литерном виде и разделяются либо произвольным количеством пробелов, либо признаком окончания строки. Перевод чисел из машинного представления в литерное и наоборот осуществляется автоматически. При чтении только числовых данных можно не анализировать конец строки, процедура Read сама осуществляет переход к другой строке. Например, вводятся исходные данные

3.51 -16 15 14

5.6 -10.2Е-3

для фрагмента программы

Var i,j,k: Integer;

r,s,t: Real;

...

Begin

Read (r,i,j,k,s,t);

...

Более сложная организация ввода потребуется, если исходные данные содержат смесь литерных и числовых данных. Например, вводится календарная дата, состоящая из дня (целое), месяца (три символа) и года (целое). Между этими тремя данными может быть произвольное количество пробелов, а может и не быть ни одного. Хотя после первого числа обязательно должен быть пробел, — как разделитель, иначе произойдет ошибка ввода.

Program Input_Date;

Var i,j: integer;

ch: char;

mch: array [1..3] of char;

Begin

Read(i);

Repeat

Read(ch);

Until ch <> ' ';

mch[1]:=ch;

Read (mch[2]);

Read (mch[3]);

Read (j);

{ Writeln (i,' ',mch,' ',j); }

end.

В данном случае нельзя целиком ввести массив mch, так как количество пробелов неопределенно.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: