>>63

#include <stdio.h>
#include <stdlib.h>

static const char* hexDigits = "0123456789abcdef";
static const char  hexMask = (1 << 4) - 1;
static const int   width = 10;

int main(int argc, char* argv[]) {
  FILE* fp;
  int len, bytes = 0;
  unsigned char buf[256];
  if(argc <= 1) {
    fprintf(stderr, "こう使う。hexdump FILE\n");
    exit(1);
  }
  if((fp = fopen(argv[1], "rb")) == NULL) {
    fprintf(stderr ,"ひらけね\n");
    exit(1);
  }
  while(0 < (len = fread(buf, sizeof(char), sizeof(buf), fp))) {
    int i;
    for(i=0; i < len; i++) {
      putchar( hexDigits[(buf[i] >> 4) & hexMask] );
      putchar( hexDigits[ buf[i]       & hexMask] );
      printf("%s", ((++bytes % width) == 0)? "\n": " ");
    }
  }
  fclose(fp);
  return 0;
}