title: Printing out hex values of a char* array in C gives odd values for binary input
body: <p>Here's an odd problem that's been stumping me for a bit.</p>
  
  <p>The program is written in C89, and it reads a file into a char* array 16 bytes at a time (using fread and a size of sizeof(char)). The file is fopen'd with the "rb" flags. The array is then passed into a function that basically takes the 16 hex values and sticks it into a string, each value seperated by a space.</p>
  
  <p>Here's where the weirdness comes in. The function produces a nice hex dump, 16 bytes at a time, for a text file input that I have. But it screws up if I try it on a small bitmap image -- I end up with output in the string like ffffff88 instead of just 88.</p>
  
  <p>The hex values are placed into the output string using sprintf("%02x ", input[i]); in a loop.</p>
  
  <p>Why would this work properly for some files but not others?</p>