実現したいこと
zipファイル"Q2 (2).zip"の中にファイル"Q2"があり、その中にテキストファイル(01.txt, 02.txt, ...)があます。各ファイル(01.txt, 02.txt, ...)には50個くらいの数値が書かれています。
各ファイルにおいて数値の平均値、最大値、最小値を表示させ、どのファイルでその平均値、最大値、最小値が導出されたのかわかるようにoutput.txtに書き込むプログラムを作成したいです。
発生している問題・分からないこと
ファイルQ2を開くことができません。これはソースコードを実行すると"ファイルオープンに失敗しました2。"が表示されることからわかりました。
・ファイル「Q2」内にあるテキストファイル(01.txtなど)を開き、平均値などを計算するプログラムを書いたつもりなのですが、テキストファイルを開くことができません。これはソースコードを実行すると"ファイルオープンに失敗しました3。"が表示されることからわかりました。
C言語初心者なのでお手柔らかにお願いします。
該当のソースコード
#include <stdio.h> int main(){ FILE *f1, *f2, *f3, *f4, *f5; double max=0.0, min=0.0, sum=0.0; double temp, ave; int i,j=0; char fname[10]; f1=fopen("./Q2", "r"); f2=fopen("./output.txt", "w"); if(f1==NULL){ printf("ファイルオープンに失敗しました1。\n"); return 1; }else if(f2==NULL){ printf("ファイルオープンに失敗しました2。\n"); return 1; } f3=fopen("./01.txt", "r"); if(f3==NULL){ printf("ファイルオープンに失敗しました3。\n"); return 1; } fclose(f3); for(i=0; i<=9; i++){ if(i<9){ sprintf(fname, "0%d.txt", i+1); }else{ sprintf(fname, "%d.txt", i+1); } printf("%s\n", fname); f4=fopen("fname", "r"); if(f4==NULL){ printf("ファイルオープンに失敗しました4。\n"); return 1; }else{ while( fscanf(f4, "%lf" , &temp) == 1 ) { if(max<=temp){ max=temp; }else if(temp<=min){ min=temp; } sum=sum+temp; j++; } ave=sum/j; fprintf(f2, "ファイル%s中の数値の最大値は%lf,最小値は%lf,\n平均値は%lfです。\n", fname, max, min, ave); } fclose(f4); } fclose(f1); fclose(f2); fclose(f3); return 0; }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
「ファイルの中のファイルを開く方法」などで調べましたがいいものがヒットせず、途方に暮れています。
また、zipファイルではなく、普通のファイル(Q2)の中のファイル(01.txtなど)を読み込むのも試しましたが、同様に上手く動作しませんでした。(※質問内容訂正のため削除)
補足
ファイル名が連番になっているので、このサイトを参考にしてファイル名の検索および読み込みを行うようプログラムしました。
Q2 (2).zipファイルを添付したいのですが、やり方がわからないのでファイルの場所をスクショしたものを添付いたします。
[修正および補足内容]
・ソースコードおよび「発生している問題・わからないこと」を修正いたしました。
・これは学校の課題で、課題文を一部抜粋いたしますと、「以下の圧縮ファイル(zip形式)内にある連番となっているテキストファイル内の数値データ(実数)を読み込み...」となっています。





回答1件
あなたの回答
tips
プレビュー