0
テキストファイルに文字が表示される回数をカウントするプログラムがあります。カウンタとファイルI/Oとのやり取り
void file_histogram(char *filename)
{
FILE *file1;
file1 = fopen(filename, "r");
int size = 26;
int charCounters[size];
char c;
int i, j;
if(file1 != NULL) {
while(fscanf(file1, "%c", &c) == 1) {
for(i = 0; i < size; ++i) {
if(c == i + 97) {
charCounters[i]++;
break;
}
}
}
}
for(j = 0; j < size; ++j)
printf("%c: %d\n", j + 97, charCounters[j]);
fclose(file1);
これが二回最初の文字をカウントしているやっているように見える、その後、約半数が正しくカウントされているもの
、残りの半分はすべて、最大またはオーバーフローに到達するように見えました。ここで何が起こっているのですか?
int size = 26とどうやって決めていますか?そして、これは特定の「既知の」ファイルやファイルのためになっているのでしょうか? – inbinder
a)charCountersをすべて0に設定しないでください。b)なぜそのファイルの読み込みセクションにforループがあるのですか? – John3136
配列は、アルファベットの各文字に対してです – nichow