#include "compressor.h" #include #include int main(int argc, char** argv) { // Перевірка правильності кількості аргументів if (argc != 4 || (argv[1][1] != 'c' && argv[1][1] != 'd' && argv[1][1] != '2' && argv[1][2] != '2')) { printf("Usage: \n"); printf(" Compress: ./compressor -c infile.txt outfile.compress\n"); printf(" Decompress: ./compressor -d infile.compress outfile.txt\n"); printf(" Compress using RLE: ./compressor -c2 infile.txt outfile.rle\n"); printf(" Decompress using RLE: ./compressor -d2 infile.rle outfile.txt\n"); return 1; } char* action = argv[1]; // -c, -d, -c2, -d2 char* infile = argv[2]; // Вхідний файл char* outfile = argv[3]; // Вихідний файл // Відкриваємо вхідний і вихідний файли FILE* inf = fopen(infile, "rb"); // Відкриваємо вхідний файл для читання FILE* outf = fopen(outfile, "wb"); // Відкриваємо вихідний файл для запису if (!inf || !outf) { printf("Error opening files.\n"); return 1; } // Виконання операцій в залежності від дії if (action[1] == 'c') { // Компресія за допомогою алгоритму 1 (Huffman) if (compress_1(infile, outfile) > 0) { printf("File successfully compressed using algorithm 1 (Huffman).\n"); } else { printf("Error compressing file with algorithm 1 (Huffman).\n"); } } else if (action[1] == 'd') { // Декомпресія за допомогою алгоритму 1 (Huffman) if (decompress_1(infile, outfile) > 0) { printf("File successfully decompressed using algorithm 1 (Huffman).\n"); } else { printf("Error decompressing file with algorithm 1 (Huffman).\n"); } } else if (action[1] == '2' && action[2] == '2') { // Компресія за допомогою алгоритму 2 (RLE) if (compress_2(infile, outfile) > 0) { printf("File successfully compressed using algorithm 2 (RLE).\n"); } else { printf("Error compressing file with algorithm 2 (RLE).\n"); } } else if (action[1] == 'd' && action[2] == '2') { // Декомпресія за допомогою алгоритму 2 (RLE) if (decompress_2(infile, outfile) > 0) { printf("File successfully decompressed using algorithm 2 (RLE).\n"); } else { printf("Error decompressing file with algorithm 2 (RLE).\n"); } } // Закриваємо файли після операцій fclose(inf); fclose(outf); return 0; }