usaa24/sk1/main.c
2024-12-24 18:44:48 +00:00

69 lines
2.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "compressor.h"
#include <stdio.h>
#include <stdlib.h>
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;
}