diff --git a/sk1/compressor.c b/sk1/compressor.c index c187d78..f7923e0 100644 --- a/sk1/compressor.c +++ b/sk1/compressor.c @@ -120,18 +120,33 @@ int compress_1(const char* input_file_name, const char* output_file_name) { unsigned char* data = read_file(input_file_name, &size); if (!data) return -1; + HuffmanNode* root = build_huffman_tree(data, size); if (!root) { free(data); return -1; } + char* codes[256] = {0}; char buffer[256]; generate_huffman_codes(root, codes, buffer, 0); + + FILE* output_file = fopen(output_file_name, "wb"); + if (!output_file) { + perror("Error opening output file"); + free(data); + free_huffman_tree(root); + return -1; + } + + fwrite(data, 1, size, output_file); + fclose(output_file); + printf("Compressing using Huffman coding...\n"); + // Clean up for (int i = 0; i < 256; i++) { if (codes[i]) free(codes[i]); } @@ -141,6 +156,7 @@ int compress_1(const char* input_file_name, const char* output_file_name) { return 0; } + int decompress_1(const char* input_file_name, const char* output_file_name) { size_t size; unsigned char* data = read_file(input_file_name, &size);