/* count the letters in a file */

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

int main(int argc, char *argv[])
{
   int	  c, i, letter[94];
   float  p, t;
   FILE	*ifp, *ofp;
   
   if (argc != 3) {
      printf("\n%s%s%s\n\n", "Usage: ", argv[0], " infile  outfile");
      exit(1);
   }
   
   ifp = fopen(argv[1], "r");
   ofp = fopen(argv[2], "w");
   
   t = 0;
   
   for (i = 0; i < 94; ++i)	/* initialize array */
   	letter[i] = 0;
   	
   while ((c = getc(ifp)) != EOF)
   	if (c >= '!' && c <= '~') {	/* find and count the letters */
	   ++t;
   	   ++letter[c - '!'];
	}
   
   for (i = 0; i < 94; ++i) {
	p = (letter[i] / t) * 100;
   	fprintf(ofp, "%c, %d, %g\n", '!' + i, letter[i], p);
   }
   
   putc('\n', ofp);
   fprintf(ofp, "total,%g\n", t);
   putc('\n', ofp);
   
   fclose(ifp);
   fclose(ofp);
   return 0;

}

