#include <stdio.h>
#include <string.h>
int main(void)
{
char string[100];
int c = 0, count[26] = {0};
int accum = 0;
int a;
while(1)
{
a = scanf("%s", string);
while ( string[c] != '\0' )
{
if ( string[c] >= 'a' && string[c] <= 'z' ){
count[string[c]-'a']++;
accum++;
}
else if (string[c] >= 'A' && string[c] <= 'Z'){
count[string[c]-'A']++;
accum++;
}
c++;
}
if (a == EOF)
{
for ( c = 0 ; c < 26 ; c++ )
{
if( count[c] != 0 )
printf( "%c %f\n", c+'a', ((double)count[c])/accum);
}
}
}
return 0;
}
そのため、EOF まで標準入力に現れる文字の頻度をカウントするプログラムがあります。しかし、EOF に達すると、プログラムが無限ループに入り、周波数が正しくないように見えます。単一の文字列を入力するためにprintステートメントを配置するだけで、正常に機能します。何が問題なのかよくわかりません。誰でもこれで私を助けることができますか?