skuska
This commit is contained in:
		
							parent
							
								
									b1da0bb771
								
							
						
					
					
						commit
						1e6fb33624
					
				| @ -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); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user