usaa24/sk1/main.c

86 lines
3.1 KiB
C
Raw Normal View History

2024-12-24 15:01:40 +00:00
#include <stdio.h>
#include <stdlib.h>
2024-12-26 15:59:23 +00:00
#include <string.h>
#include "compressor.h" // Підключаємо тільки заголовок
2024-12-24 15:01:40 +00:00
2024-12-26 15:59:23 +00:00
void display_help();
2024-12-24 17:17:13 +00:00
2024-12-26 15:59:23 +00:00
int main(int argc, char *argv[]) {
2024-12-26 17:06:08 +00:00
if (argc < 4) {
2024-12-26 15:59:23 +00:00
display_help();
return -1;
2024-12-24 18:44:48 +00:00
}
2024-12-24 17:17:13 +00:00
2024-12-26 15:59:23 +00:00
char *input_filename = argv[2];
char *output_filename = argv[3];
2024-12-26 17:16:15 +00:00
// Компресія
if (argc == 4 && strcmp(argv[1], "-c") == 0) {
if (strstr(output_filename, ".rle") != NULL) {
2024-12-26 15:59:23 +00:00
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);
}
2024-12-26 17:16:15 +00:00
} else if (strstr(output_filename, ".lz77") != NULL) {
2024-12-26 15:59:23 +00:00
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);
}
2024-12-24 18:44:48 +00:00
} else {
2024-12-26 17:16:15 +00:00
printf("Unsupported compression format. Use .rle or .lz77.\n");
2024-12-26 15:59:23 +00:00
return -1;
2024-12-24 17:21:43 +00:00
}
2024-12-24 18:44:48 +00:00
}
2024-12-26 17:06:08 +00:00
2024-12-26 17:16:15 +00:00
// Декомпресія
else if (argc == 4 && strcmp(argv[1], "-d") == 0) {
2024-12-26 15:59:23 +00:00
if (strstr(input_filename, ".rle") != NULL) {
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 (strstr(input_filename, ".lz77") != NULL) {
2024-12-26 17:06:08 +00:00
printf("Decompressing LZ77...\n");
2024-12-26 15:59:23 +00:00
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);
}
2024-12-24 18:44:48 +00:00
} else {
2024-12-26 17:16:15 +00:00
printf("Unsupported decompression format. Use .rle or .lz77.\n");
2024-12-26 15:59:23 +00:00
return -1;
2024-12-24 17:21:43 +00:00
}
2024-12-24 18:44:48 +00:00
}
2024-12-26 17:06:08 +00:00
2024-12-26 17:16:15 +00:00
// Показати довідку
2024-12-26 15:59:23 +00:00
else if (argc == 3 && strcmp(argv[1], "-h") == 0) {
display_help();
} else {
printf("Invalid arguments\n");
display_help();
return -1;
2024-12-24 15:01:40 +00:00
}
return 0;
}
2024-12-26 15:59:23 +00:00
void display_help() {
printf("Usage:\n");
2024-12-26 17:16:15 +00:00
printf(" -c infile outfile : Compress infile to outfile. Supported formats: .rle, .lz77\n");
printf(" -d compressed outfile : Decompress compressed to outfile. Supported formats: .rle, .lz77\n");
printf(" -h : Display this help message.\n");
2024-12-26 17:06:08 +00:00
printf("Examples:\n");
2024-12-26 17:16:15 +00:00
printf(" compression_tool -c input.txt output.rle\n");
2024-12-26 15:59:23 +00:00
printf(" compression_tool -d output.rle decompressed.txt\n");
}