Запись данных в бестиповой файл

Задача

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

Решение

 

Описание переменных: 

f_in – текстовый файл;
f_out – бестиповой файл;
name_in, name_out – их имена;
buffer – блок данных, записываемый в бестиповой файл.

Алгоритм решения задачи: 

  1. Текстовый файл открывается для чтения.
  2. Нетипизированный файл открывается на запись блоками, равными размеру массива из восьми целых чисел.
  3. Данные из текстового файла считываются в массив.
  4. Когда массив полностью заполняется, то данные из него записываются в нетипизированный файл, а индекс массива снова начинает указывать на первый элемент.
  5. Если конец текстового файла был достигнут раньше, чем заполнен массив очередной порцией данных, то массив дописывается нулями, после чего данные выталкиваются в бестиповой файл.
  6. Оба файла закрываются.

Программа на языке Паскаль: 

 

var
    f_in: text;
    f_out: file;
    name_in, name_out: string;
    buffer: array[1..8] of integer;
    i,k: integer;
begin
{$I-}
    write('Входной файл: ');readln(name_in);
    assign(f_in,name_in);
    reset(f_in);
    if IOResult <> 0 then begin
        writeln ('Файл не найден!');
        exit
    end;
    write('Выходной файл: ');readln(name_out);
    assign(f_out,name_out);
    rewrite(f_out,sizeof(integer)*8);
{$I+}
    i := 0;
    while not eof(f_in) do begin
        inc(i);
        read(f_in,buffer[i]);
        if i = 8 then begin
            blockwrite(f_out,buffer,1);
            i := 0
        end;
    end;
    if i <> 0 then begin
        for k:=i+1 to 8 do buffer[k] := 0;
        blockwrite(f_out,buffer,1);
    end;
    close(f_in);
    close(f_out);
 
readln
end.

 

Примечания: 

Процедура blockwrite записывает в файл один блок данных, начиная с адреса, заданного переменной buffer. Длина блока равна длине буфера, заданного при открытии файла на запись.

 

Тема

Файлы

Уровень

Сложные задачи

Теги

Добавить комментарий