入力されたファイルに書かれている各文字をカウントする
例えば
Oh say can you see, by the dawn's early light,
という文字列が入力ファイルに書かれている場合下のように
O: 1
a: 4
b: 1
d: 1
e: 3
h: 3
i: 1
l: 2
といった具合に出力ファイルに書き込みたいんです。
ですが、やり方が全く分からず何とか思いついたコードを書き込んでも、正解にかすりもしないので助けて下さい。
まだまだ初心者なので、できるなら解決策だけでなく、足りない知識や考え方を教えてください。
使っているソフトはMicrosoft Visual studioで、言語はC言語です
発生している問題
下にある自分が作ったコードでは、なぜか最初の一文字だけをカウントし出力し終了してしまう事と、なぜか入力ファイルが真っさらになっている事。
エラーメッセージはありましたが、色々やっていたらなぜかいつのまに消えていました。(怖い)
該当の自作ソースコード(一部修正済み)
#include <stdio.h> #include <stdlib.h> int main(void){ int i ,count, str[100] = { 0 },c; FILE* fp; FILE* fpout; if ((fp = fopen("13-3in.txt", "r")) == NULL) { printf("error message"); exit(1); } if ((fpout = fopen("13-3out.txt", "w")) == NULL) { printf("error message"); exit(1); } while ((c = fgetc(fp)) != EOF) { count = 0; for (i=0; i <= 100; i++) { else if (c == '!' + i) { str[i]++; } } } for (i = 0; i < 100; i++) { if (str[i] >= 1) { fprintf(fpout, "%c; %d\n", ('!' + i), str[i]); } } fclose(fp); fclose(fpout); return 0; }
試したこと
手探りなので、全く試す方法などがわかりません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/09/10 09:23 編集