• 締切済み

C言語で困っています...[文字数のカウント]

C言語で困っているので教えていただきたいです。 ファイルのデータ(英文)を読み込み、一行毎の文字数(スペースも含む)とワード数を数えるプログラムを作成しています。 ワード数を数えることはできたのですが、文字数をどのように数えればよいかわかりません。 while文の後にif文でワード数を数えるようにしたので、同様に文字数も数えようとしましたが、 ( )内に何を入れるべきかで行き詰まりました。 バイト数を数えるようにすればよいのだろうとは思ったのですが...、 また、3行ある英文を読み込むのですが、 このままのプログラムだと3行全体でのワード数を求めるようになってしまっています。 1行ごとに文字数、ワード数を表示するにはどうしたらよいのでしょうか? ちなみにbcc developerを使っています。 どなたか、よろしくお願いします。 /* ファイルのデータ(英文)を読み込み、    一行毎の文字数(スペースも含む)とワード数を数える */ #include<stdio.h> int main(void){ char filename[20]; printf("ファイル名を入力してください:"); scanf("%s",filename);/*ファイルの名前を指定*/ FILE *f; int c; int j=0,k=0; f=fopen(filename,"r");/*ファイルを開く*/ if(f==NULL){ printf("%sがオープンできません!\n",filename); return 1; } while((c=fgetc(f))!=EOF){ if(c==' '||c=='\n') j++; } k=k+1; printf("⇒%d文字、%dワード\n",k,j); fclose(f);/*ファイルを閉じる*/ return 0; }

みんなの回答

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.1

条件があります。 \nだけの行は1文字、1ワード 半角スペースはワードの間に1つのみ(2スペースのものはワードに加える) #include<stdio.h> int main(void){ char filename[20]; printf("ファイル名を入力してください:"); scanf("%s",filename);/*ファイルの名前を指定*/ FILE *f; int c; int j=0,k=0; f=fopen(filename,"r");/*ファイルを開く*/ if(f==NULL){ printf("%sがオープンできません!\n",filename); return 1; } while((c=fgetc(f))!=EOF){ if(c==' '||c=='\n') j++; if(c!=' ') k++; if(c=='\n') { printf("⇒%d文字、%dワード\n",k,j); k=0; j=0; } } fclose(f);/*ファイルを閉じる*/ return 0; }

関連するQ&A

専門家に質問してみよう