行内の文字の出現をカウントしようとしています。しかし、私の結果はかなり間違っています。エラーが含まれていると思われる関数を紹介します。
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()ingstdinを試しました。どんなポインタでもありがたいですが、私のためにそれを書いてはいけません。