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

Задача

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

Решение

 

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

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. Длина блока равна длине буфера, заданного при открытии файла на запись.

 

Тема

Файлы

Уровень

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

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

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Введите символы, которые показаны на картинке.