J'essaie de compter la fréquence des premières lettres des mots d'un dictionnaire, qui contient environ 140 000 mots. J'enregistre les fréquences dans le tableau compter avec count[0] pour la lettre a, count[1] pour la lettre b ... cependant, lorsque j'additionne le tableau compter la valeur n'est pas égale au nombre total de mots du dictionnaire. J'ai découvert que si je réduis la taille du dictionnaire à 95137, les chiffres sont égaux, mais dès que le dictionnaire a plus de 95137 mots, les valeurs de count[0] à count[4] deviennent soudainement immensément grandes. Je ne sais pas pourquoi voici mon code :
#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]);
}