I'm learning C from the book C Programming Language by Kernighan & Ritchie. I was told that this is the best book.
In the chapter about Arrays they said :
Let is write a program to count the number of occurrences of each digit, of white space characters (blank, tab, newline), and of all other characters. This is artificial, but it permits us to illustrate several aspects of C in one program.
There are
twelve categories of input, so it is convenient to use an array to hold the number of occurrences of each digit, rather than
ten individual variables. Here is one version of the program:
I don't understand! How come 12 categories of input can be put into 10 variables??
Also, what are these categories?
digits are 0-9 + white space characters + all other characters it should exceed 12 inputs. Much less 10!
This is the code example :
Code:
#include <stdio.h>
// count digits, white space, others
int main()
{
int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother = 0;
for (i = 0; i < 10; i = i + 1)
ndigit[i] = 0;
while ((c = getchar()) != EOF)
{
if (c >= '0' && c <= '9')
++ndigit[c-'0'];
else if (c == ' ' || c == '\n' || c == '\t')
++nwhite;
else
++nother;
}
printf("digits = ");
for (i = 0; i < 10; ++i)
printf(" %d", ndigit[i]);
printf(" , white space = %d, other = %d \n", nwhite, nother);
}
Any help is much appreciated