- 締切済み
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; }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- maiko0318
- ベストアンサー率21% (1483/6969)
条件があります。 \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; }