#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, моя программа просто переходит в бесконечный цикл, и частоты не кажутся правильными. Когда я просто добавляю инструкцию печати для ввода одной строки, она отлично работает. Я не знаю, в чем проблема. Кто-нибудь сможет мне помочь?Бесконечная петля при попытке подсчета частот букв
Вы можете объявить «a» с помощью scanf перед циклом while, а затем проверить, не совпадает ли EOF с телом цикла. – wafflesausage