#include <stdio.h>
#define IN 1
#define OUT 0
#define maxword 15
main()
{
int j,i,state,c,nc_word;
nc_word = 0;
int count [maxword];
for(i=0;i<=maxword;i++)
count[i]=0;
state = OUT;
while((c=getchar())!= EOF)
{
if( c == ' '|| c == '\t'||c == '\n')
{
if (state == IN){
++count[nc_word];
nc_word = 0;
}
state = OUT;
}
else
{
state = IN;
++nc_word;
}
}
for(i=13 ; i>=1 ; --i)
{
printf("\n%d",i);
for(j=1;j<=count[i];j++){
printf(" *");
}
}
}
このプログラムは、単語の文字数のヒストグラムを出力します。ただし、配列 count[] の最後の要素を -1 に設定します (私の場合、-1 は EOF 値です)。たとえば、入力に 14 文字の単語が 1 つある場合、count[14] は 1 のはずですが、機能していません。常に -1 に設定されています。