un.txtというファイルに英文が書かれていて、その英文のなかにキーボードから入力された単語が何回出てくるかを数えるということをやりたいのですが、(大文字と小文字は区別し、記号の有無も区別する)
fscanfの性質上、空白で読み込みが終わるので,英単語と英単語の間も空白なので、下のようにすれば数えることができると思うのですが、whileの条件をどうしたらいいかわからず、という状態です。英文が終わるのでfscanfに何も読み込まれなくなったときの条件です
whileでできるという情報を聞いただけなのでwhile以外でも構いませんが、どなたか解決案を教えてほしいです
追記 txに文字列を代入したいのですが、txを配列にすればいいのでしょうか
C
1 2#include<stdio.h> 3#include <string.h> 4 5int main(vold){ 6 int i,cnt=0; 7 char w,tx; 8 FILE *fp; 9 fp=fopen("un.txt","r"); 10 scanf("%s",w); 11 12while(){ 13 fscanf(fp,"%s",tx); 14 if(strcmp(w,tx)==0){ 15 cnt++; 16 } 17} 18printf("%d",cnt); 19} 20
un.txtには英文字と空白と改行文字しか入っていない、のでしょうか?
そうでないなら、「ここでいう「単語」とはなにか」をもっと厳密に定義する必要があります。
たとえば Free! は「Freeという単語の次に記号!がある」として処理するのか「『Free!』という一つ単語扱いにするのか。