• 締切済み

C言語のプログラムについてご指導願えますか?

ファイルを読み込み、そのなかにI,We,You,He,She,Theyの単語がいくつかるかカウントするプログラムを作成したいのですが、単語のカウントがうまくできません。 下記に作成したソースを記載しますので、間違っている箇所を指摘していただけませんか? #include <stdio.h> #include <stdlib.h> #include <string.h> int main( void ) { char filename[FILENAME_MAX]; int j=0; int k=0; int l=0; int m=0; int n=0; int o=0; FILE *fp; gets(filename); fp = fopen(filename,"r"); { if(fp==NULL) { printf("ERROR"); return -1; } if(strcmp("I",fp)==0) { j++; } if(strcmp("We",fp)==0) { k++; } if(strcmp("You",fp)==0) { l++; } if(strcmp("He",fp)==0) { m++; } if(strcmp("She",fp)==0) { n++; } if(strcmp("They",fp)==0) { o++; } } printf("I: %d\n",j); printf("We: %d\n",k); printf("You: %d\n",l); printf("He: %d\n",m); printf("She: %d\n",n); printf("They: %d",o); fclose(fp); return 0; }

みんなの回答

回答No.2

一番間違っているのは、fpを文字列だと思ってstrcmpに代入していること。 fscanf(fp,~ を使わないとデーターは読めない。 文章中に、何個あるかを数えるとすると、 ループ処理をしなくてはいけないが、そうなっていない。 ちょこっと読んで字が一致するか判別するのをファイルの終わりまで繰り返す、あるいはなんか別の方法を使う必要がある。 o++のあとにかっこが一つ余計な気がする。

ryokutya21
質問者

補足

ご丁寧な回答ありがとうございます。 回答を元に修正をして見ます。

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

>間違っている箇所を指摘していただけませんか? 既にコンパイラが指摘しているはずです。