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

FILE *gfopen(char *filename, char *mode);
void bit_print(char a);

 void main(int argc, char **argv)

  {
    char c;
    FILE *ifp ;
    int i,retval;

    if (argc != 2)
    { fprintf(stderr, "\n%s%s%s\n\n",
            "Useage:   ",argv[0], "file name");
            
        exit(1);
    }
   ifp = gfopen(argv[1],"r");
   i = 0;
   while (retval = fread(&c,sizeof(c),1,ifp))   /*reads binary file */ 
     {  bit_print(c);
        i = i + 1;
        if( (i % 9)==0)
          printf("\n");
     }
   fclose(ifp);
          
    }

    FILE *gfopen(char *fn, char *mode)
{
  FILE *fp;

  if ((fp = fopen(fn, mode)) == NULL)
    { fprintf(stderr,"cannot open %s \n",fn);
      exit(1);
    }
    return fp;
}
  void bit_print(char a)
{
  int i;
  int n = sizeof(char)*CHAR_BIT;
  int mask = 1 << (n - 1);

  for (i = 1; i <= n; ++i)
    { putchar(((a & mask) == 0) ? '0' : '1');
      a <<= 1;
      if (i % CHAR_BIT == 0 )
          putchar(' ');
    }
}






