アプリ版:「スタンプのみでお礼する」機能のリリースについて

適当な英文の書かれたファイル(input.txt)を用意して、ファイルとして保存しておく。
main()関数の引数でそのファイル名を与えてファイルをオープンし、そのファイルから1文字ずつ読み込んで、ファイル中に含まれる『e』の数を数えるプログラムを作成したいです。

どのような流れでプログラムを書いたらいいのかわかりません。

教えてください!!

A 回答 (4件)

1文字ずつ読み込むことが要件であればfgetc()で1文字ずつ読むことですが、単純に数を数えたいのであれば、fgets()や、fread()などを利用してまとめてバッファにファイルから読み込み、strchr()を使って「e」の場所を見つけることを繰り返し、ファイルの最後まで読むことを繰り返すという方法があります。

    • good
    • 0

フィルタ処理の基本例題みたいに見えるけど、


ファイル名を指定して開くの?

#include <stdio.h>
main(int argc, char**argv){
FILE *fp;
int c, n = 0;
if(argc < 2 || (fp = fopen(argv[1],"r") == NULL) exit(-1);
while((c = getc(fp)) != EOF)
  if(c == 'e') ++n;
/* fclose(fp); */
printf("%d\n",n);
}

とかね。
    • good
    • 0
この回答へのお礼

たぶん指定するんだと思います!
ありがとうございます!!
参考に頑張ってみます!!

お礼日時:2019/11/30 09:22

一文字ずつ読み込まなくても全体を配列に噛ましてループ検索してやれば

    • good
    • 0
この回答へのお礼

なるほど!!
やってみます!!

お礼日時:2019/11/30 09:23

例えば、



fopen関数で、mainの引数のファイル名のファイルを開き、ファイルポインタを取得。
eの数を格納する変数を0に初期化
whileでループ
 fgetcで1文字取得
 取得した文字がEOFであった場合、whileからbreak
 取得した文字が'e'であった場合、eの数をインクリメント
eの数を表示

とか。
    • good
    • 0
この回答へのお礼

ありがとうございます!!
これを参考に書いてみます!

お礼日時:2019/11/30 09:24

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