alissonlacerda alissonlacerda - 10 days ago 5
C Question

Read a file as byte array

I have an assignment for coding a Huffman algorithm. I have the whole problem organized in my head, but I'm having some trouble with file handling.

The problem is: the algorithm is supposed to compress ANY kind of file.

My solution: read the file as a byte array, then with an

int array[256]={0}
for each byte, get it's
int n
corresponding value and increment the
array[n]
. If I didn't make it clear, let me know.

So, I've done lots of researching, but don't understand how to get bytes from ANY kind of file and how to handle them.

Answer
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

Now you have an array of bytes containing the file's contents.