Exercise 1-12.
Write a program that prints its input one word per line.
#include <stdio.h>
#define IN 1 // inside a word
#define OUT 0 // outside a word
main()
{
int c;
int state = OUT;
while((c = getchar()) != EOF){
if (c == ' ' || c == '\n' || c == '\t'){
if(state == IN){
state = OUT;
printf("\n");
}
} else if(state == OUT){
state = IN;
putchar(c);
} else
putchar(c);
}
}
1.6 Arrays
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.
#include <stdio.h>
// count digits, white space, others
main()
{
int c, i, nwhite, nother;
int ndigit[10];
nwhite = nother =0;
for (i = 0; i < 10; i++)
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);
}