Чтение файла в виде байтового массива

У меня есть назначение для кодирования алгоритма Хаффмана. У меня возникла вся проблема в моей голове, но у меня проблемы с обработкой файлов.

Проблема заключается в том, что алгоритм должен сжимать любой вид файла.

Мое решение: прочитайте файл как массив байтов, затем с int array[256]={0} для каждого байта, получите его int n соответствующее значение и увеличьте array[n] . Если я не проясню, дайте мне знать.

Итак, я провел много исследований, но не понимаю, как получить байты из ЛЮБОГО типа файлов и как их обрабатывать.

     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 

    Теперь у вас есть массив байтов, содержащий содержимое файла.

    Как насчет попыток двоичного файла IO:

      FILE *f=fopen("example.bin","rb"); char c; //loop for each byte to the end { size_t fread(&c, (size_t)1, (size_t) 1, f); array[c]++; } 

    Или что-то в этом роде !!