私は単語の頻度を見つけようとしていますが、なぜプログラムがクラッシュしているのかわかりません...私はまだまだ多くの方法を試みました。私は何か間違っているのですか? *入力は、ブックファイルと作成したい新しいファイルです。プログラムは実行されません - 本の計算機の手紙の頻度
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE *fp,*fp2;
int ch, total, counter, totalcounter, i;
int letters[25], letterfrequency[25];
for(i=0; i<25; i++)
{
letters[i] = 0;
letterfrequency[i] = 0;
}
printf("Opening: %s", argv[1]);
fp = fopen(argv[1], "r");
if (!fp)
{
perror("fopen");
exit(1);
}
while((ch=fgetc(fp)) != EOF)
{
if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
{
counter = toupper(ch);
ch = counter - 65;
letters[ch]++;
totalcounter++;
}
}
fp2 = fopen(argv[2], "w");
for(i=0;i<25;i++)
{
fprintf(fp2, "%c: Times used: %s\tFrequency Used: %s", i+65, letters[i], letters[i]/totalcounter);
}
fclose(fp);
fclose(fp2);
return 0;
}
あなたのコードは警告のトンを持っています。 '-Wall'を使ってコンパイルしてください。警告を修正してください。それでもコードが動作していない場合は、コードを再投稿してください。 – Schwern
どのようにこれを実行しようとしていますか?予想される出力は何ですか? – bentank
あなたは 'ch'の値の印刷を追加することができます、それは問題を識別するのに役立ちます – lowtech