dポイントプレゼントキャンペーン実施中!

c言語で任意のファイルから読み込んだ単語の数をカウントする

任意のファイルを読み込んだプログラムに、読み込んだ単語の数をカウントするプログラムを追加する課題が出ました。

条件は単語は空白で区切って1単語とする。改行も考慮に入れる。

関数を定義してポインタを使うらしいのですが検討がつきません。

下のプログラムでファイルを読み込むところまでは出来ています。
どうかご教授おねがいします;;

#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *myFile;
int i=0,c;
if(argc < 2) {
fprintf(stderr,"alice.txt is required\n");
return 1;
}
myFile=fopen(argv[1],"r");
if(myFile==NULL) {
fprintf(stderr,"Cannot open; %s\n",argv[1]);
}
while ((c=fgetc(myFile)) !=EOF) {
fprintf(stderr,"%c",c);
}
fclose(myFile);
return 0;
}

A 回答 (3件)

一文字ずつ読むところまではできているので、後は読んだデータが「空白」か「改行コード」だったら区切りとして+1することで大体のところまでできますよ。



>関数を定義してポインタを使うらしいのですが検討がつきません。
だと、「一行を読み込んで、その読み込んだバッファを単語数を確認するための関数で使用し単語数を返す」といった関数を作ることになりますね。
    • good
    • 0
この回答へのお礼

ありがとうございます。解答の道筋がすこし見えてきました。

お礼日時:2010/06/05 23:24

>関数を定義してポインタを使うらしいのですが検討がつきません。



誤:検討がつきません
正:見当がつきません

>どうかご教授おねがいします;;

誤:ご教授おねがいします
正:ご教示お願いします。

>if(myFile==NULL) {
>fprintf(stderr,"Cannot open; %s\n",argv[1]);
>}
>while ((c=fgetc(myFile)) !=EOF) {
>fprintf(stderr,"%c",c);
>}

誤:ファイルがオープンできなくても、強引に読みにいっている。
正:ファイルがオープンできなかったらプログラムを終了する、などの措置を執るべき。


空白や改行が登場するたびに単語の数を表わす変数値をインクリメントしていけばよい。
    • good
    • 0
この回答へのお礼

誤字の訂正ありがとうございます;

参考にしてみます。

>ファイルがオープンできなかったらプログラムを終了する
盲点でした。ありがとうございます。

お礼日時:2010/06/05 23:28

キーワードはトークンとかで答えは出てきます。



http://www1.cts.ne.jp/~clab/hsample/Func/Func08. …

ご参考
    • good
    • 0
この回答へのお礼

ありがとうございます。参考にしてみます。

お礼日時:2010/06/05 23:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています