usaa24/sk1/main.c
2024-12-24 15:32:24 +00:00

78 lines
2.9 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 print_help() {
printf("Usage:\n");
printf(" ./compressor -c1 infile outfile Compress using algorithm 1 (Huffman)\n");
printf(" ./compressor -d1 infile outfile Decompress using algorithm 1 (Huffman)\n");
printf(" ./compressor -c2 infile outfile Compress using algorithm 2 (RLE)\n");
printf(" ./compressor -d2 infile outfile Decompress using algorithm 2 (RLE)\n");
printf(" ./compressor -h Show this help message\n");
}
// Функція для перевірки валідності аргументів
int check_arguments(int argc, char* argv[]) {
// Перевіряємо наявність достатньої кількості аргументів
if (argc < 2) {
fprintf(stderr, "Error: Missing required arguments.\n");
print_help();
return 0;
}
// Якщо користувач запитав допомогу, виводимо її
if (strcmp(argv[1], "-h") == 0) {
print_help();
return 0;
}
// Перевіряємо, чи правильно передано 3 аргументи (режим, вхідний файл, вихідний файл)
if (argc != 4) {
fprintf(stderr, "Error: Invalid number of arguments.\n");
print_help();
return 0;
}
// Перевірка на правильний режим стиснення чи розпакування
const char* mode = argv[1];
if (strcmp(mode, "-c1") != 0 && strcmp(mode, "-d1") != 0 && strcmp(mode, "-c2") != 0 && strcmp(mode, "-d2") != 0) {
fprintf(stderr, "Error: Unknown mode '%s'.\n", mode);
print_help();
return 0;
}
return 1; // Аргументи правильні
}
int main(int argc, char* argv[]) {
// Перевіряємо, чи коректні аргументи
if (!check_arguments(argc, argv)) {
return 1;
}
// Окремо отримуємо значення аргументів
const char* mode = argv[1];
const char* infile = argv[2];
const char* outfile = argv[3];
// Вибір алгоритму стиснення або розпакування
if (strcmp(mode, "-c1") == 0) {
printf("Compressing using algorithm 1 (Huffman)...\n");
compress_1(infile, outfile);
} else if (strcmp(mode, "-d1") == 0) {
printf("Decompressing using algorithm 1 (Huffman)...\n");
decompress_1(infile, outfile);
} else if (strcmp(mode, "-c2") == 0) {
printf("Compressing using algorithm 2 (RLE)...\n");
compress_2(infile, outfile);
} else if (strcmp(mode, "-d2") == 0) {
printf("Decompressing using algorithm 2 (RLE)...\n");
decompress_2(infile, outfile);
}
return 0;
}