From 3b98bf8de4851b1b602a18d7426791b40ef2b37d Mon Sep 17 00:00:00 2001 From: Yurii Chechur Date: Tue, 24 Dec 2024 15:21:04 +0000 Subject: [PATCH] Update sk1/main.c --- sk1/main.c | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/sk1/main.c b/sk1/main.c index d3c7683..9fa9e3c 100644 --- a/sk1/main.c +++ b/sk1/main.c @@ -3,6 +3,7 @@ #include #include "compressor.h" +// Функція для виведення допомоги void print_help() { printf("Usage:\n"); printf(" ./compressor -c1 infile outfile Compress using algorithm 1 (Huffman)\n"); @@ -12,41 +13,64 @@ void print_help() { printf(" ./compressor -h Show this help message\n"); } -int main(int argc, char* argv[]) { +// Функція для перевірки валідності аргументів +int check_arguments(int argc, char* argv[]) { + // Перевіряємо наявність достатньої кількості аргументів if (argc < 2) { + fprintf(stderr, "Error: Missing required arguments.\n"); print_help(); - return 1; + 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); - } else { - fprintf(stderr, "Error: Unknown mode '%s'.\n", mode); - print_help(); - return 1; } return 0; } -