/archiver

based on the Huffman algorithm

Primary LanguageC

Archiver ( and extractor )

Порядок работы сжатия

  1. Открытие и чтение файла
  2. Расчёт частоты встречаемости символов
  3. Сортировка массива символов по частоте по убыванию
  4. Создание дерева Хаффмана
  5. Создание кодов Хаффмана
  6. Запись в архивный файл таблицы кодов

Далее:

6.1. Медленный путь: Создание промежуточного файла, состоящего из 0 и 1 – закодированный полученным кодом первый файл.

7.1. Запись полученной последовательности в архивный файл.

или

6.2. Путь быстрее: Создание архивного файла из полученных до п.6 данных напрямую.


Порядок работы извлечения

  1. Открытие файла
  2. Чтение таблицы кодов символов
  3. Расшифровка сжатой двоичной последовательности

Использование

arh [mode] [input file] [output file] [info option]

Обазательные аргументы:

  • mode - режим работы

    • сжатие (-c или --compress)

    • извлечение (-e или --extract)

  • input file - входной файл

  • output file - выходной файл

Необязательные аргументы:

  • info option - вывод информации

    • полный: таблица кодов и частот символов и временные затраты на операцию (--full)

    • вывод выключен (--quiet)

По умолчанию, info option соответствует выводу только информации о временных затратах.

Например, чтобы сжать файл "nonarch.txt" в файл "archived" с выводом информации о затраченном времени, нужно выполнить такую команду:

arh -c nonarch.txt archived

Проект выполнялся на дисциплине "Углублённое изучение языка C"