double arrow

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


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

Var A: Text;

Для обработки текстовых файлов используются те же процедуры и функции, что и для обработки обычных типизированных файлов. Для связывания файловой переменной с файлом на диске употребляется процедура Assign. Текстовые файлы могут быть открыть для чтения процедурой Reset или для записи процедурой Rewrite.

Для чтения данных применяется процедура Read. Если необходимо после чтения данных перейти на следующую строку, то используется процедура Readln. Если необходимо просто перейти к следующей строке, то можно использовать процедуру Readln(<имя файловой переменной текстового файла>); которая устанавливает файловый указатель на первый элемент следующей строки.

Процедура Write записывает данные в текущую строку. Если надо записать данные и перейти к следующей строке, то можно использовать процедуру Writeln. Если требуется только перейти для записи на новую строку, то применяется процедура Writeln(<имя файловой переменной текстового файла>); которая записывает в файл признак конца строки и устанавливает файловый указатель на начало следующей строки.




Так как в строках может быть разное количество символов, имеется логическая функция Eoln(<имя файловой переменной текстового файла>), которая принимает значение True, если достигнут конец строки.

Процедура Append(<имя файловой переменной текстового файла>). Она открывает файл для «дозаписи», помещая файловый указатель в конец файла.

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

Решение: Пусть в файле содержится следующая информация:

-32 16 0 8 7

4 5 9 13 11 -5 -8

6 -8 0 -12

5 4 3 2 1 12

1 2

Этот файл можно создать в среде Турбо Паскаль следующим образом:

* создайте новый файл посредством команды Newменю File;

* запишите все числа, разделяя их пробелами, и разбейте на строки, как указано в задании;

* сохраните файл, например, под именем INT1.DAT

* теперь напишем программу

program rrr;

varf : text;

x, k: integer;

Begin

Assign(f,’int1.dat’);

Reset(f);

While Not Eof(f) do {пока не достигнут конец файла}

Begin

k:=0;

While Not Eoln(f) do {пока не достигнут конец строки}

Begin

read(f,x); {считываем очередное число}

write(x,’ ‘); {выводим его на экран}

Inc(k); {увеличиваем счетчик}

end;

writeln(‘в строке’, k, ‘ элементов’);

Readln(f) {переходим к следующей строке файла}

end;

Close(f);

End.

Пример.Записать двумерный массив вещественных чисел 5х4 в тестовый файл.



Program mas;

constm=5; n=4;

Varfil : text;

a: real;

s: char;

i,j : integer;

Begin

Assign(fil,’massiv.txt’);

Rewrite(fil);

for i:=1 to m do

begin

for j:=1 to n do

begin

a:=random(100);

write(fil,a:5:3,’ ‘); {число записывается в файл в указанном формате, за ним пробел}

end;

writeln(fil); {переход в файле на новую строку}

end;

Close(fil);

{Чтение файла и вывод матрицы на экран по строкам}

Reset(fil); {открытие уже имеющегося файла}

while not Eof(fil) do

begin

while not Eoln(fil) do

begin

read(fil,a); {чтение числа}

write(a:5:3);

read(fil,s); { чтение пробела после числа}

write(s);

end;

writeln;

readln(fil);

end;

Close(fil);

End.

Пример.Дан текстовый файл f. Переписать в файл g все компоненты исходного файла f в обратном порядке.

program tofile;

varf, g : text;

n, i, j : integer;

s : string;

x : array [1..32000] of char;

Begin

assign(f,’f.txt’); assign(g,’g.txt’);

rewrite(g); rewrite(f);

writeln(‘Введите число строк в создаваемом вами файле ‘);

readln(n);

writeln(‘вводите строки, после введения каждой нажмите Enter’);

for i:=1 to n do begin readln(s); write(f,s); end;

reset(f);

i:=0;

writeln(‘Исходный файл :’);

while(not eof(f)) and (i<32000) do

begin i:=i+1; read(f,x[i]); write(x[i]); end;

writeln;

writeln(‘Измененный файл :’);

for j:=i downto 1 do

begin write(g,x[j]); write(x[j]); end;

writeln;

close(f); close(g);

End.

Задача. Дан текстовый файл. Вставить в начало каждой строки ее номер и записать преобразованные строки в новый файл.

Задача. Даны два текстовых файла. Записать в третий файл только те строки, которые есть и в первом, и во втором файлах.







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