J'ai une tâche pour coder un algorithme de Huffman. J'ai tout le problème organisé dans ma tête, mais j'ai des problèmes avec la gestion des fichiers.
Le problème est: l'algorithme est censé compresser TOUT type de fichier.
Ma solution: lire le fichier sous forme de tableau d'octets, puis avec un int array[256]={0}
pour chaque octet, obtenez son int n
valeur correspondante et incrémenter le array[n]
. Si je n'ai pas été clair, faites le moi savoir.
J'ai donc fait beaucoup de recherches, mais je ne comprends pas comment obtenir des octets de N'IMPORTE QUEL type de fichier et comment les gérer.
FILE *fileptr;
char *buffer;
long filelen;
fileptr = fopen("myfile.txt", "rb"); // Open the file in binary mode
fseek(fileptr, 0, SEEK_END); // Jump to the end of the file
filelen = ftell(fileptr); // Get the current byte offset in the file
rewind(fileptr); // Jump back to the beginning of the file
buffer = (char *)malloc((filelen+1)*sizeof(char)); // Enough memory for file + \0
fread(buffer, filelen, 1, fileptr); // Read in the entire file
fclose(fileptr); // Close the file
Vous disposez maintenant d'un tableau d'octets contenant le contenu du fichier.