/* * Program to count how many times each character occurs in input file. * Filename given as command-line argument. */ #include #include #include int main(int argc, char *argv[]) { if (argc != 2) { printf("arguments: infile\n"); return 1; } FILE * infile = fopen(argv[1], "r"); if (infile == NULL) { printf("cannot open input\n"); return 1; } int inchar; int count = 0; /* UCHAR_MAX defined in limits.h -- largest value for char */ int counters[UCHAR_MAX+1] = { 0 }; while ((inchar = fgetc(infile)) != EOF) { counters[inchar] += 1; count += 1; } printf("%d total chars\n", count); for (int ch = 0; ch <= UCHAR_MAX; ++ch) { if (isprint(ch)) { printf("char %c occurs %d times\n", ch, counters[ch]); } else { printf("char with value %d occurs %d times\n", ch, counters[ch]); } } fclose(infile); return 0; }