我正在尝试计算一行中字母的出现。但是我的结果是错误的。我只介绍我认为包含错误的函数。

void readAndCount(int &numWords, int letterCount[])
{
    //set letterCount[] numwords initial values
    memset(letterCount, 0, 26);
    numWords = 1;

    char a = ' ';
    while(a != '\n')
    {
        a = getc(stdin);
        if (a == ' ' || a == ',' || a == '.' || '\n')
            ++numWords;
        else
            if(a >= 'A' && a <= 'Z')
            {
                ++letterCount[a - 'A'];
            } else if (a >= 'a' && a <= 'z') {
                ++letterCount[a - 'a'];
            }
    }

    return;
}

这是一个字符串产生:
3 words
1 a
4194305 g
1 h
3 i
4196355 k
32630 n
4197445 o
32630 r
4197379 s
2 t
4196576 w
32767 z

在读取输入之前,我已经尝试过fflush()ing stdin。
任何指针将不胜感激,但请不要只为我写。

最佳答案

memset(letterCount, 0, 26)letterCount指向的26个字节的内存清零,而不是所需的26个int。 memset(letterCount, 0, 26*sizeof(int))怎么样?

10-08 09:16