usaa24/sk1/main.c
2024-12-26 17:27:19 +00:00

90 lines
3.3 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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "compressor.h"
void display_help();
int main(int argc, char *argv[]) {
if (argc < 5) { // Мінімум 4 аргументи (включаючи алгоритм та файл)
display_help();
return -1;
}
char *action = argv[1]; // -c або -d
char *algorithm = argv[2]; // rle або lz77
char *input_filename = argv[3]; // Вхідний файл
char *output_filename = argv[4]; // Вихідний файл
// Компресія
if (strcmp(action, "-c") == 0) {
if (strcmp(algorithm, "rle") == 0) {
printf("Compressing using RLE...\n");
int result = rle_compress(input_filename, output_filename);
if (result >= 0) {
printf("Compression successful. Compressed size: %d bytes\n", result);
} else {
printf("Compression failed with error code %d\n", result);
}
} else if (strcmp(algorithm, "lz77") == 0) {
printf("Compressing using LZ77...\n");
int result = lz77_compress(input_filename, output_filename);
if (result >= 0) {
printf("Compression successful. Compressed size: %d bytes\n", result);
} else {
printf("Compression failed with error code %d\n", result);
}
} else {
printf("Unsupported compression algorithm. Use 'rle' or 'lz77'.\n");
return -1;
}
}
// Декомпресія
else if (strcmp(action, "-d") == 0) {
if (strcmp(algorithm, "rle") == 0) {
printf("Decompressing RLE...\n");
int result = rle_decompress(input_filename, output_filename);
if (result >= 0) {
printf("Decompression successful. Decompressed size: %d bytes\n", result);
} else {
printf("Decompression failed with error code %d\n", result);
}
} else if (strcmp(algorithm, "lz77") == 0) {
printf("Decompressing LZ77...\n");
int result = lz77_decompress(input_filename, output_filename);
if (result >= 0) {
printf("Decompression successful. Decompressed size: %d bytes\n", result);
} else {
printf("Decompression failed with error code %d\n", result);
}
} else {
printf("Unsupported decompression algorithm. Use 'rle' or 'lz77'.\n");
return -1;
}
}
// Показати довідку
else if (strcmp(action, "-h") == 0) {
display_help();
} else {
printf("Invalid arguments\n");
display_help();
return -1;
}
return 0;
}
void display_help() {
printf("Usage:\n");
printf(" -c algorithm infile outfile : Compress infile using specified algorithm (rle or lz77).\n");
printf(" -d algorithm infile outfile : Decompress infile using specified algorithm (rle or lz77).\n");
printf(" -h : Display this help message.\n");
printf("Examples:\n");
printf(" compression_tool -c rle input.txt output.rle\n");
printf(" compression_tool -c lz77 input.txt output.lz77\n");
printf(" compression_tool -d rle input.rle output.txt\n");
printf(" compression_tool -d lz77 input.lz77 output.txt\n");
}