usaa24/sk1/main.c
2024-12-24 17:21:43 +00:00

90 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 <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "compressor.h"
#define BUFSIZE 1024
void print_help() {
printf("Available Options:\n");
printf("1 - Compress using algorithm 1 (Huffman)\n");
printf("2 - Decompress using algorithm 1 (Huffman)\n");
printf("3 - Compress using algorithm 2 (RLE)\n");
printf("4 - Decompress using algorithm 2 (RLE)\n");
printf("0 - Exit\n");
}
int main() {
int choice;
char infile[256], outfile[256];
// Покажемо користувачу доступні варіанти
print_help();
while (1) {
// Запитуємо користувача про вибір
printf("Enter your choice (0 to exit): ");
if (scanf("%d", &choice) != 1) {
// Якщо введення не є числом, виводимо повідомлення про помилку
fprintf(stderr, "Invalid input. Please enter a valid number (0-4).\n");
// Очищаємо буфер введення від непотрібних символів
while(getchar() != '\n');
continue;
}
if (choice == 0) {
printf("Exiting program.\n");
break;
}
if (choice < 0 || choice > 4) {
// Перевіряємо, чи вибір знаходиться в допустимому діапазоні
printf("Invalid choice. Please select a valid option (1-4).\n");
continue;
}
// Вводимо імена файлів
printf("Enter input file name: ");
scanf("%s", infile);
printf("Enter output file name: ");
scanf("%s", outfile);
// Перевіряємо, чи існує вхідний файл, і чи доступний вихідний файл для запису
FILE *infile_ptr = fopen(infile, "rb");
if (!infile_ptr) {
printf("Error: Input file does not exist or cannot be opened.\n");
continue;
}
fclose(infile_ptr);
FILE *outfile_ptr = fopen(outfile, "wb");
if (!outfile_ptr) {
printf("Error: Output file cannot be created or opened.\n");
continue;
}
fclose(outfile_ptr);
// Виконання обраного алгоритму
switch (choice) {
case 1:
compress_1(infile, outfile);
break;
case 2:
decompress_1(infile, outfile);
break;
case 3:
compress_2(infile, outfile);
break;
case 4:
decompress_2(infile, outfile);
break;
default:
printf("Invalid choice. Please select again.\n");
break;
}
}
return 0;
}