бинарная версия программы что это

Как открыть файл с расширением BIN

бинарная версия программы что это. Смотреть фото бинарная версия программы что это. Смотреть картинку бинарная версия программы что это. Картинка про бинарная версия программы что это. Фото бинарная версия программы что это

Формат файлов BIN – особенный. В отличие от других, он способен содержать в себе самые разнообразные данные. Давайте разберемся, что может находиться в БИН-файлах, и рассмотрим способы их открытия.

Что представляет собой формат BIN

Программы для открытия BIN файлов

Предположить, что перед вами бинарный файл образа диска, можно по его размеру. Например, образы дистрибутивов операционных систем «весят» 1-2 Gb и больше, образы CD/DVD/Blu-ray дисков – от десятков Mb до нескольких Gb и т. д.

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

Открыть файл Bin с образом диска можно при помощи различных онлайн-сервисов и приложений. Первых не так уж и много, они далеко не всегда корректно считывают данные, да и загружать на веб-сайт файл большого размера неудобно. Поэтому остановимся на рассмотрении программ, которые умеют работать с объектами этого типа. Большинство таких приложений платные, но чаще всего имеют бесплатный пробный период с некоторыми ограничениями. Рассмотрим в подробностях несколько программ для Windows.

UltraISO

UltraISO — одна из самых популярных программ для работы с образами дисков. Она поддерживает множество форматов и, в том числе, способна разархивировать бинарные файлы.

Программа UltraISO способна производить следующие действия с бинарными образами:

Для установки UltraISO, как и остальных описанные ниже приложений, запустите скачанный с сайта разработчика инсталлятор с именем программы. В некоторых случаях установочный файл называется setup или install.

Чтобы открыть БИН при помощи UltraISO, сделайте следующее:

Daemon Tools Lite

Daemon Tools — еще одна популярная программа, которая умеет работать с образами дисков. Ее интерфейс достаточно прост, и разобраться в нем несложно без инструкции.

Если хотите, чтобы Daemon Tools открывал образы BIN по умолчанию, при установке приложения отметьте этот формат, как на скриншоте ниже:

С помощью Daemon Tools вы сможете:

Чтобы открыть БИН при помощи Daemon Tools, запустите программу и сделайте следующее:

В отличие от UltraISO, программа Daemon Tools Lite не загружает образ в себя, а монтирует его в виртуальный привод. Содержимое последнего открывается в проводнике Windows 7 или Windows 10 как обычная папка или диск.

Power ISO

Приложение PowerISO также умеет работать с различными типами образов дисков, в том числе распаковать архивы BIN. По интерфейсу и функционалу оно похоже на UltraISO, но, как и Daemon Tools, имеет бесплатную и платные версии.

Power ISO позволяет производить с БИН файлами следующие действия:

Чтобы открыть БИН с помощью Power ISO, сделайте следующее:

Открыть BIN на компьютере также можно и при помощи других приложений для работы с образами дисков, таких, как Alcohol 120%, MagicISO, Hex to Bin Utility, Roxio Creator, Nero Burning ROM и т. д.

Другие виды бинарных файлов

Помимо образов дисков, файлы бинарного формата могут быть прошивками устройств, данными игр, видео- или аудиозаписями и многим другим. Рассмотрим несколько самых распространенных после образов типов БИН-файлов в подробностях.

Исполняемый двоичный файл

Исполняемый файл — это часть какого-либо приложения в двоичном виде. Он может содержать в себе данные для запуска программы или её настройки.

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

Некоторые из файлов этого типа можно открыть при помощи приложения Apache OpenOffice, которое работает на компьютерах с операционной системой Windows, Mac OS и Linux.

Исполняемый файл Unix

Файлы двоичного формата в операционных системах Unix – это обычные приложения. Они предназначены для использования в дистрибутивах Linux, FreeBSD и т. д.

Файл прошивки маршрутизатора

Фирмы Linksys, D-Link, ZyXEL, TP-Link, Huawei используют в своих роутерах прошивки в формате БИН. Прошивка – это программа, которая управляет работой устройства.

Для работы с файлами прошивок используются собственные приложения производителей роутеров для различных платформ (Windows, Mac, Android и т. д.), а также веб-сервисы.

Архив Macbinary II

Бинарник Macbinary II — это закодированный, сжатый файл с данными, обычно предназначенный для передачи информации через сеть. Открывается при помощи следующих программ:

Файл обновления конфигураций устройств BlackBerry

Программный пакет BlackBerry Enterprise Server содержит в себе приложение IT Policy Manager, одним из компонентов которого является файл policy.bin. Он содержит в себе данные настроек и используется системными администраторами для обновления программного обеспечения BlackBerry.

Policy.bin можно открыть при помощи программы Research In Motion BlackBerry Desktop Manager.

Файл игр приставки Nintendo DS

Открыть файл БИН этого типа можно при помощи следующих программ:

Файл игры Atari

БИН-файл игры Atari содержит в себе образ картриджа для одноименных консолей, которые были популярны в 80-ых годах. Файл используется для загрузки игр в эмулятор приставки, открыть его можно при помощи следующих приложений:

Файл данных Nintendo Wii

Файл данных Nintendo Wii может содержать в себе зашифрованные или обычные текстовые сведения об игре для одноименной игровой консоли. Обычно он хранится на SD-карте устройства и имеет название content.bin. Увидеть, что находится в этом файле, можно при помощи программных инструментов самой приставки.

Образ игры Sega Genesis

Бинарник Sega Genesis – это образ картриджа с игрой для консоли Sega Genesis. На компьютере он открывается при помощи эмуляторов.

BIOSPlayStation

БИН файлы BIOS PlayStation также могут открываться в эмуляторах одноименной консоли на компьютере. Они предназначены для обеспечения работы устройства.

Программы для открытия файлов BIOS PlayStation в Windows, Mac OS и Linux:

Бинарный видео- или аудиофайл

В BINе может находиться и обычная видео- или аудиозапись. Проиграть её смогут такие медиаплееры, как:

Если вы не знаете, чем именно может быть интересующий вас файл BIN, предположить его примерное назначение поможет размер. Объект размером от десятков Mb до нескольких Gb, скорее всего, окажется образом диска, видеозаписью или приложением. Файл небольшого объема, вероятно, будет содержать прошивку устройства или данные для эмуляторов игровых приставок.

Источник

Бинарный файл

Двоичный (бинарный) файл — в широком смысле: последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных (англ. binary ) цифр.

В узком смысле слова двоичные файлы противопоставляются текстовым файлам. При этом с точки зрения технической реализации на уровне аппаратуры, текстовые файлы являются частным случаем двоичных файлов, и, таким образом, в широком значении слова под определение «двоичный файл» подходит любой файл.

Часто двоичными файлами называют исполняемые файлы и сжатые данные, однако некорректно так ограничивать это понятие.

Содержание

Визуализация

Для наглядного представления двоичного файла он разбивается на куски равного размера, представляемые в виде чисел, записываемых, обычно, в шестнадцатеричной системе, иногда в восьмеричной, двоичной или десятичной. Означенный размер куска может быть равен одному октету, а также двум или четырём (в случае разбиения на куски по несколько октетов применяется порядок байтов, принятый на используемой платформе). Зависимость диапазона представляемых чисел от размера куска показана в таблице:

октетовкол-во битшестнадцатеричноевосьмеричноедесятичное
беззнаковое
десятичное
знаковое
1800

FF
000

377
0

255
-128

127
2160000

FFFF
000000

177777
0

65535
-32768

32767
43200000000

FFFFFFFF
00000000000

37777777777
0

4294967295
-2147483648

2147483647

Инструменты

Для визуализации

Для редактирования

Литература

Полезное

Смотреть что такое «Бинарный файл» в других словарях:

файл — сущ., м., употр. сравн. часто Морфология: (нет) чего? файла, нет? файлу, (вижу) что? файл, чем? файлом, о чём? о файле; мн. что? файлы, (нет) чего? файлов, чем? файлам, (вижу) что? файлы, чем? файлами, о чём? о файлах 1. Файлом называется массив… … Толковый словарь Дмитриева

Бинарный формат — Двоичный (бинарный) файл в широком смысле: последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных (англ. binary) цифр. В узком смысле слова двоичные файлы противопоставляются текстовым файлам.… … Википедия

Двоичный файл — Двоичный (бинарный) файл в широком смысле: последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных (англ. binary) цифр. В узком смысле слова двоичные файлы противопоставляются… … Википедия

конфигурационный файл — Бинарный или текстовый файл, содержащий информацию, которая определяет поведение приложения, компьютера или сетевого устройства. [http://www.lexikon.ru/dict/net/index.html] Тематики сети вычислительные EN configuration file … Справочник технического переводчика

Паскаль (язык программирования) — Эта статья или раздел нуждается в переработке. В Паскале нет модулей, ООП и прочих новомодных веяний. Описание расширений должно присутствовать только в статьях о соответ … Википедия

Паскаль (язык) — Pascal Семантика: процедурный Тип исполнения: компилятор Появился в: 1970 г. Автор(ы): Никлаус Вирт Паскаль (англ. Pascal) высокоуровневый язык программирования общего назначения. Один из наиболее известных языков программирования, широко… … Википедия

Gopher (сетевой протокол) — Gopher Название: Gopher Порт/ID: 70/TCP Спецификация: RFC 1436 Основные реализации (клиенты): Mozilla Firefox, Microsoft Windows: IE 5.x, IE 6 (ограничено MS) Gopher сетевой протокол распределённого поиска и передачи документов, бывший широко рас … Википедия

Gopher — Название: Gopher Порт/ID: 70/TCP Спецификация: RFC 1436 Основные реализации (клиенты): Mozilla Firefox, Microsoft Windows: Internet Explorer 5.x, Internet Explorer 6 (ограничено MS) Gopher сетевой протокол распределённого поиска и передачи… … Википедия

Список расширений имени файла/B — / * A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Примечание: Поскольку расширение имени файла может быть любым, представленный список не является полным … Википедия

Источник

В чем отличие бинарного файла от исходного?

Во время работы с Linux у вас есть возможность на выбор использовать два совсем разных способа установки программ, а именно:

Выбрать нужный необходимо отталкиваясь от ваших потребностей и требований к системе, ну и конечно от наличия навыков и опыта в развертывании ПО. Рассмотрим отдельно каждый из методов, их плюсы, а также минусы и трудности, которые могут встретиться при установке.

Бинарный файл

Для установки требуется специальная программа для распаковки этих файлов и помещения их на компьютер. То есть менеджер пакетов вашего дистрибутива Linux (например, apt, yum и т. д.). Менеджер пакетов также выполняет и другие полезные функции кроме распаковки, такие как отслеживание установленных файлов и управление обновлениями программного обеспечения.

Преимущества и плюсы использования бинарных файлов

Недостатки и минусы использования

Исходные файлы

Чтобы получить tar-архив с исходным кодом для определенного программного обеспечения, вам нужно знать URL-адрес к tar-архиву. После чего нужно распаковать скачанный tar-архив специальной командой tar для определенного типа расширения архива, чтобы получить доступ к файлам и возможность работать с исходником. Следующим шагом выполняются нужные настройки среды для компиляции и установки программного обеспечения из исходного кода.

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

Специальный набор инструментов помогает автоматизировать этот процесс. На десктопах Linux это обычно происходит в форме программы командной строки под названием make. Выше перечислены стандартные этапы, при выполнении каких возможно могут появляться ошибки, и будет необходимо выполнять дополнительные манипуляции, в этом и есть сложность внедрения проектов через исходные файлы.

Касательно вопроса, где можно найти исходный код к продукту, вариантов много, в большинстве случаев Вы можете загрузить исходный код проекта с таких сервисов, как GitHub или BitBucket. Некоторые владельцы ПО могут даже разместить его на личном веб-сайте.

Преимущества и плюсы использования исходных файлов

Недостатки и минусы использования

К минусам этот пункт можно и не относить, но для установки ПО с исходника потребуется уже наличие теоретических знаний и необходимых навыков в понимании документации к продукту, работы с терминалом и т.д., тут обычному пользователю может быть сложно.

Оба метода хороши и несут в себе разные цели использования. В большинстве случаев достаточно выбрать стандартный метод с помощью бинарных файлов.

Источник

Бинарные файлы

Бинарные файлы

Т екстовые файлы хранят данные в виде текста (sic!). Это значит, что если, например, мы записываем целое число 12345678 в файл, то записывается 8 символов, а это 8 байт данных, несмотря на то, что число помещается в целый тип. Кроме того, вывод и ввод данных является форматированным, то есть каждый раз, когда мы считываем число из файла или записываем в файл происходит трансформация числа в строку или обратно. Это затратные операции, которых можно избежать.

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

Выполните программу и посмотрите содержимое файла output.bin. Число, которое ввёл пользователь записывается в файл непосредственно в бинарном виде. Можете открыть файл в любом редакторе, поддерживающем представление в шестнадцатеричном виде (Total Commander, Far) и убедиться в этом.

Запись в файл осуществляется с помощью функции

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

Запись в бинарный файл объекта похожа на его отображение: берутся данные из оперативной памяти и пишутся как есть. Для считывания используется функция fread

Функция возвращает число удачно прочитанных элементов, которые помещаются по адресу ptr. Всего считывается count элементов по size байт. Давайте теперь считаем наше число обратно в переменную.

fseek

Одной из важных функций для работы с бинарными файлами является функция fseek

Эта функция устанавливает указатель позиции, ассоциированный с потоком, на новое положение. Индикатор позиции указывает, на каком месте в файле мы остановились. Когда мы открываем файл, позиция равна 0. Каждый раз, записывая байт данных, указатель позиции сдвигается на единицу вперёд.
fseek принимает в качестве аргументов указатель на поток и сдвиг в offset байт относительно origin. origin может принимать три значения

В случае удачной работы функция возвращает 0.

Дополним наш старый пример: запишем число, затем сдвинемся указатель на начало файла и прочитаем его.

Вместо этого можно также использовать функцию rewind, которая перемещает индикатор позиции в начало.

В си определён специальный тип fpos_t, который используется для хранения позиции индикатора позиции в файле.
Функция

используется для того, чтобы назначить переменной pos текущее положение. Функция

используется для перевода указателя в позицию, которая хранится в переменной pos. Обе функции в случае удачного завершения возвращают ноль.

Рассмотрим пример: пользователь вводит числа. Первые 4 байта файла: целое, которое обозначает, сколько чисел было введено. После того, как пользователь прекращает вводить числа, мы перемещаемся в начало файла и записываем туда число введённых элементов.

Вторая программа сначала считывает количество записанных чисел, а потом считывает и выводит числа по порядку.

Примеры

1. Имеется бинарный файл размером 10*sizeof(int) байт. Пользователь вводит номер ячейки, после чего в неё записывает число. После каждой операции выводятся все числа. Сначала пытаемся открыть файл в режиме чтения и записи. Если это не удаётся, то пробуем создать файл, если удаётся создать файл, то повторяем попытку открыть файл для чтения и записи.

4. Функция saveInt32Array позволяет сохранить массив типа int32_t в файл. Обратная ей loadInt32Array считывает массив обратно. Функция loadInt32Array сначала инициализирует переданный ей массив, поэтому мы должны передавать указатель на указатель; кроме того, она записывает считанный размер массива в переданный параметр size, из-за чего он передаётся как указатель.

5. Создание таблицы поиска. Для ускорения работы программы вместо вычисления функции можно произвести сначала вычисление значений функции на интервале с определённой точностью, после чего брать значения уже из таблицы. Программа сначала производит табулирование функции с заданными параметрами и сохраняет его в файл, затем подгружает предвычисленный массив, который уже используется для определения значений. В этой программе все функции возвращают переменную типа Result, которая хранит номер ошибки. Если функция отработала без проблем, то она возвращает Ok (0).

6. У нас имеются две структуры. Первая PersonKey хранит логин, пароль, id пользователя и поле offset. Вторая структура PersonInfo хранит имя и фамилию пользователя и его возраст. Первые структуры записываются в бинарный файл keys.bin, вторые структуры в бинарный файл values.bin. Поле offset определяет положение соответствующей информации о пользователе во втором файле. Таким образом, получив PersonKey из первого файла, по полю offset можно извлечь из второго файла связанную с данным ключом информацию.

Зачем так делать? Это выгодно в том случае, если структура PersonInfo имеет большой размер. Извлекать массив маленьких структур из файла не накладно, а когда нам понадобится большая структура, её можно извлечь по уже известному адресу в файле.

Источник

Бинарная версия программы что это

a ). файл, в котором используется двоичный поиск,

б).файл, в котором данные представлены в двоичной системе счисления»

Модель двоичного файла

Такая модель файла полностью совпадает с системой представлений, принятой в Си для работы с памятью на низком (физическом уровне).

· физическая память имеет байтную структуру – единицей адресации является байт;

· любая переменная занимает фиксированное количество байтов, определяемое ее типом. Операция sizeof возвращает эту размерность ;

int fread (void *buf, int size, int nrec, FILE *fd);

int fwrite (void *buf, int size, int nrec, FILE *fd);

Чтобы воспользоваться этими функциями, необходимо обеспечить преобразования переменных к «массиву байтов», используя указатели для задания адресов и операцию sizeof для вычисления размерности:

// Прочитать целую переменную и следующий за ней

// динамический массив из n переменных типа double

int n ; // в целой переменной – размерность массива

double *pd = new double[n];

Произвольный доступ базируется на понятии адреса в двоичном файле. Поскольку на физическом уровне двоичный файл представляется как «неограниченно растущий» массив байтов, то под адресом понимается порядковый номер байта, начиная с 0.

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

#define SEEK_SET 0 // Относительно начала файла

#define SEEK_CUR 1 // Относительно текущей позиции,

fseek(fl,0L,SEEK_END); // Установить позицию на конец файла

fsize = ftell(fd); // Прочитать значение текущей позиции

fseek(fd,i,SEEK_CUR); // 100+sizeof(long)=104, позиционирование 104+46=150

Замечание: введя понятие произвольного доступа по адресу в файле, мы не ответили на главные вопросы: а откуда взять эти адреса и как размещаются данные в файле (распределяется память). Эти вопросы – к технологии программирования.

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

// Открыть существующий как двоичный для чтения и записи

// Создать новый как двоичный для записи и чтения

Дамп двоичного файла

При отладке программ, работающих с двоичными файлами, иногда сложно установить, какой фрагмент – запись или чтение – содержит ошибку. Аналогично, при чтении уже известного формата необходимо проверять, насколько правильно читаются данные. Здесь не обойтись без навыков чтения дампа – двоичного содержимого файла. Для этого нам придется вспомнить основы представления базовых типов данных в памяти (см. 1.3). Естественно, что все данные и адреса присутствуют в шестнадцатеричной системе счисления.

// Формирование ДАМПА для чтения файла

fwrite(&p,sizeof(long),1,fd); // Занять место под указатель

fwrite(A,sizeof(short),k,fd); // Записать массив коротких целых (2B)

p=ftell(fd); // Получить значение указателя

fwrite(B,sizeof(int),m,fd); // Записать массив целых

fseek(fd,0,SEEK_SET); // К началу файла

fwrite(&p,sizeof(long),1,fd); // Обновить указатель на второй массив

бинарная версия программы что это. Смотреть фото бинарная версия программы что это. Смотреть картинку бинарная версия программы что это. Картинка про бинарная версия программы что это. Фото бинарная версия программы что это
рис. 94-1. Дамп двоичного файла

Чтобы теперь «увидеть» в дампе то, что мы записали, нужно учесть следующее:

· дамп выводится побайтно, один байт представлен двумя шестнадцатеричными цифрами;

· в каждой строке дампа – 16 байтов. Слева находится адрес строки (естественно, шестнадцатеричный). На рисунке для удобства обозначена младшая цифра адреса каждого байта;

· все данные пишутся «младшими байтами вперед». Т.е. для получения значения машинного слова байты надо переписать в обратном порядке;

· для данных другого типа необходим перевод в десятичную систему счисления, а также учет их размерности в соответствии с их типом.

Управление данными в двоичном файле

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

// Добавить в файл вещественную переменную

Последовательность операций записи в файл создает в нем необходимую структуру данных. Иногда эти операции записи являются фиктивными с целью «занять место» под переменные с еще не определенными значениями.

· свободные участки объединяются в отдельную структуру данных, например, список, и повторно используются. Недостатком является сложность поддержания в файле дополнительной структуры данных;

// Обновить счетчик в двоичном файле

fseek(fd,pos,SEEK_SET); // Читать счетчик

a++; // Увеличить в памяти

· структуры данных в памяти и в файле принципиально различаются. Например, дерево (данные в вершинах и связи) можно сохранить в последовательном потоке (файле) в виде рекурсивного саморазворачивающегося формата (см. 8.2). В этом случае используется полная загрузка/сохранение структуры данных в виде единой операции;

· в памяти могут создаваться образы наиболее важных (часто используемых, управляющих) элементов структуры данных из двоичного файла. Например, при наличии в файле массива указателей на строки в памяти создается «образ» заголовка файла и массива указателей, а сами строки читаются «по необходимости». Такой способ создания и загрузки частичного образа структуры данных предполагает сеансовый режим работы с файлом: частичный образ создается в памяти при открытии файла. Здесь также возникает проблема соответствия образа оригиналу и обновления последнего;

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

Способы организации данных в файлах

Предлагаемая классификация базируется на различии способов доступа к данным. Фактически вопрос сводится к способу получения их адреса. Их известно несколько:

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

· адрес вычисляется, исходя из количества и размерности переменных. Сюда относятся массивы и более сложные табличные структуры данных, размерности которых хранятся в них самих (параметризация).

бинарная версия программы что это. Смотреть фото бинарная версия программы что это. Смотреть картинку бинарная версия программы что это. Картинка про бинарная версия программы что это. Фото бинарная версия программы что это

Позиционирование в текстовом файле

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

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

long pp ; // Текущая позиция фрагмента повторения

char c ; int n =0; // Количество повторов

pp = ftell ( fd ); // Запомнить текущую позицию

else // рекурсивный вызов после ‘(‘

putchar ( c ); // Перечитать фрагмент до ‘)’

//—— Вывод текста с заданной страницы

int i,n,NP; // Количество страниц в файле

long *POS; // Массив адресов начала страниц в файле

if ((fd=fopen(name,»r»))==NULL) return;

fseek(fd,0,SEEK_SET); // Вернуться в начало файла

POS=new long[NP]; // Динамический массив «закладок»

for (n=0; n // Просмотр страниц файла

POS[n]=ftell(fd); // Запомнить начало страницы

for (i=0; i // Чтение строк страницы

printf(«page number(0..%d):»,NP-1); scanf(«%d»,&n);

fseek(fd,POS[n],SEEK_SET); // Позиционироваться на страницу

for (i=0; i // Повторное чтение страницы

if (fgets(str,80,fd)==NULL) break;

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

· создать в программе стек, содержащий «точки возврата», которые также являются адресами в тексте;

Как видите, получается полная аналогия механизма вызова функции в компьютерной архитектуре с учетом того, что текстовый файл является аналогом адресного пространства (сегмента кода) программы.

Насколько же можно продвинуться в прямом доступе в текстовом файле? В принципе, никто не мешает нам записывать (обновлять) фрагменты текста, но при условии, что их размер будет точно совпадать с имеющимся. Следующий пример показывает, как извлечь из текстового файла числовое значение 6-разрядного счетчика и, увеличив, аккуратно «вписать» обратно.

//—— «Микрохирургическое» исправление счетчика

FILE *fd; char cc, name[30]=»94-03.txt»;

if ((fd=fopen(name,»r+w»))==NULL) return;

POS=ftell(fd); // Запомнить адрес символа

if ((cc=getc(fd))==EOF) break;

if (cc>=’0′ && cc // Прочитана цифра

fseek(fd,POS,SEEK_SET); // Вернуться на 1 символ

cnt++; // Увеличить счетчик

fseek(fd,POS,SEEK_SET); // Вернуться на начало счетчика

Лабораторный практикум

Указанные варианты заданий реализовать с использованием позиционирования указателя в текстовом файле и массива указателей, без загрузки самого текстового файла в память.

1. Сортировка строк файла по длине и по алфавиту и вывод результата в отдельный файл.

2. Программа-интерпретатор текста. Текстовый файл разбит на именованные модули. Каждый модуль может иметь вызовы других текстовых модулей. Требуется вывести текст модуля main с включением текстов других модулей в порядке вызова:

Произвольные строки модуля текста ааа

Произвольные строки текста

#aaa // Вызов модуля текста с именем aaa

Произвольные строки текста

Основной текст с вызовами других модулей

5. Программа просмотра блочной структуры Си-программы с командами вывода текущего блока, входа в n-ый по счету вложенный блок и выхода в блок верхнего уровня.

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

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

10. Программа составляет словарь идентификаторов и служебных слов Си-программы путем запоминания каждого идентификатора и указателя на строку, в которой он встречается. Кроме того, программа позволяет просматривать текст в обоих направлениях построчно и при выборе текущей строки ищет первый идентификатор и позиционируется к строке, где он встречается в первый раз.

11. Программа составляет «оглавление» текстового файла путем поиска и запоминания позиций строк вида «5.7.6 Позиционирование в текстовом файле». Затем программа составляет меню, с помощью которого позиционируется в начало соответствующих разделов и пунктов с прокруткой текста в обоих направлениях.

12. Программа составляет словарь функций Си-программы. Затем программа составляет меню, с помощью которого позиционируется в начало соответствующих функций. (Функцию достаточно идентифицировать по фрагменту вида «идентификатор(. » вне фигурных скобок).

15. Программа сортировки файла по длине предложений и вывода результата в отдельный файл. При выводе каждое предложение следует переформатировать так, чтобы оно начиналось с отдельной строки и располагалось в строках размером не более 60 символов.

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *