|
単語の出現頻度を表示するプログラムを作成しています。
コンパイルできたんですが、いざ実行したら、
ちゃんと表示されませんでした。
どこが、いけないか分からないので、
すみませんが、見ていただけたらと思います。
プログラムと出力は以下の通りです。
●プログラム
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
struct data {
char tango[100];
int count;
};
int main(int argc, char *argv[])
{
FILE *fp;
char c;
struct data a[100];
char moji[31];
int i,n,j,m;
/*ファイルの読み込み*/
fp=fopen("a.txt","r");
if(argc != 2) {
fprintf(stderr,"argument required\n");
return 1;
}
if(fp == NULL) {
fprintf(stderr,"file not open\n");
return 1;
}
/*判断*/
for(j=0,n=0;(c=fgetc(fp)) != EOF;) {
/* cがアルファベットなら*/
if(isalpha(c)) {
moji[j]=tolower(c);
j++;
}
else {
moji[j]='\0';
for(m=0;m<n;m++) { /*登録された時*/
if(strcmp(a[m].tango,moji)==0) {
a[m].count++;
break;
}
}
/*登録されなかった時*/
if(m==n && strlen(moji) != 0) {
a[n].count=1;
n++;
}
j=0;
}
}
fclose(fp);
/*出力*/
for(i=0;i<n;i++) {
fprintf(stdout,"%s : %d\n",a[i].tango,a[i].count);
}
return 0;
}
●読み込んだテキストa.txt
this is a pen
It is a cute
●表示
: 1
: 1
: 1
: 1
: 1
: 1
: 1
: 1
↑
単語が表示されてない…
a は2つあるはずなのに、全部”1”と表示されてる…
すみませんが、お願いします。
|