我正在尝试计算字典中单词开头字母的频率,其中包含 140 000 个单词。我将频率保存在数组count中,count[0] 用于字母 a,count [1] 用于字母 b ...但是,当我对数组count求和时,该值不等于单词总数在字典里。我发现如果我将字典大小减少到 95137,数字相等,但是一旦字典超过 95137 个单词,count[0] 到 count[4] 的值突然变得非常大。我不知道为什么..这是我的代码:
#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]);
}