#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
int main(int argc, char*argv[]){
FILE *fp=fopen(argv[1],"r");
int c;
int most;
int count[256];
if (fp==NULL){
printf("Error: %s does not exist\n",argv[1]);
exit(EXIT_FAILURE);
}
for(c=0; c<256; c++){
count[c]=0;
}
while(c=fgetc(fp)){
tolower(c);
int i;
if('a' <=c&& c<='z')
count[c-'a']++;
for(int i = 0; i<256;i++){
if(count[i]>count[most]){
most=i;
}
}
}
printf("Most frequent letter is '%c', it appeared %d times.\n",most+'a',count[most]);
fclose(fp);
}
okコマンドラインからtxtファイルを読み込み、どの文字が最も表示され、どのくらいの頻度で表示されるのかをcプログラムで作成するとします。コードを修正する方法がわかりません。私はそれを実行するときは起こらない。手紙の印刷が最も多く表示されます
は、 "それはたまたまではありません。"では何が起こるのですか? – kaylum
初期化されていない間は 'most'が使用されます。デバッガを使用してプログラムの実行をトレースすることで、コード内のこの問題やその他の問題を簡単に検出できます。 – kaylum
コマンドラインパラメータが実際に存在することを保証するために 'argc'を最初にチェックせずに' argv [0] '以外に何もアクセスしないでください – user3629249