Я пытаюсь подсчитать частоту начальных букв слов в словаре, который содержит около 140 000 слов. Я сохраняю частоты в массиве count, со счетом [0] для буквы a, count [1] для буквы b ... однако, когда я суммирую массив count, значение не равно общее количество слов в словаре. Я выяснил, что если я уменьшу размер словаря до 95137, числа будут равны, но как только словарь будет иметь более 95137 слов, значения count [0] до count [4] внезапно станут очень большими. Я понятия не имею, почему .. вот мой код:Array - Value Jump
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
FILE *fp = fopen("testdic.txt", "r");
int count[26];
char buffer[30];
for (int i = 0; i < 26; i++)
count[i] = 0;
int total = 0;
while (1)
{
fscanf(fp, "%s", buffer);
if (feof(fp))
break;
count[buffer[0]-97] ++;
total++;
if (count[0] > total) // I used this to find out where the jump occurs
break;
}
printf("%d ", i);
for (int i = 0; i < 26; i++)
printf("%d " , count[i]);
}
Stack smashing? 96k целых чисел - 400-800 КБ. И если у вас есть стек 1 МБ, то ... – 2013-02-16 14:47:57
Поместите некоторую проверку границ на 'buffer [0] -97', прежде чем пытаться использовать его в качестве индекса массива. –