web-dev-qa-db-fra.com

Lire un fichier sous forme de tableau d'octets

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.

18
alissonlacerda
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.

39
user1274193