質問編集履歴

1

質問内容および補足欄の補足・修正をいたしました

2024/01/21 01:38

投稿

varmosy
varmosy

スコア4

test CHANGED
File without changes
test CHANGED
@@ -1,12 +1,14 @@
1
1
  ### 実現したいこと
2
- zipファイル"Q2 (2).zip"の中にファイル"Q2"があり、その中にテキストファイル(01.txt, 02.txt, ...)があます。各ファイル(01.txt, 02.txt, ...)には50個くらいの数値が書かれています。
2
+ ~~zipファイル"Q2 (2).zip"の中に~~ファイル"Q2"があり、その中にテキストファイル(01.txt, 02.txt, ...)があます。各ファイル(01.txt, 02.txt, ...)には50個くらいの数値が書かれています。
3
3
 
4
4
  各ファイルにおいて数値の平均値、最大値、最小値を表示させ、どのファイルでその平均値、最大値、最小値が導出されたのかわかるようにoutput.txtに書き込むプログラムを作成したいです。
5
5
 
6
6
  ### 発生している問題・分からないこと
7
- ファイルQ2を開くことができません。これはソースコードを実行すると"ファイルオープンに失敗しました2。"が表示されることからわかりました。
7
+ ~~ファイルQ2を開くことができません。これはソースコードを実行すると"ファイルオープンに失敗しました2。"が表示されることからわかりました。~~
8
+ ・ファイル「Q2」内にあるテキストファイル(01.txtなど)を開き、平均値などを計算するプログラムを書いたつもりなのですが、テキストファイルを開くことができません。これはソースコードを実行すると"ファイルオープンに失敗しました3。"が表示されることからわかりました。
8
9
 
9
10
  C言語初心者なのでお手柔らかにお願いします。
11
+
10
12
 
11
13
 
12
14
 
@@ -23,9 +25,8 @@
23
25
  int i,j=0;
24
26
  char fname[10];
25
27
 
26
- f1=fopen("./Q2 (2).zip", "r");
27
- f2=fopen("./Q2","r");
28
+ f1=fopen("./Q2", "r");
28
- f3=fopen("./output.txt", "w");
29
+ f2=fopen("./output.txt", "w");
29
30
 
30
31
  if(f1==NULL){
31
32
  printf("ファイルオープンに失敗しました1。\n");
@@ -33,17 +34,14 @@
33
34
  }else if(f2==NULL){
34
35
  printf("ファイルオープンに失敗しました2。\n");
35
36
  return 1;
36
- }else if(f3==NULL){
37
- printf("ファイルオープンに失敗しました3。\n");
38
- return 1;
39
37
  }
40
38
 
41
- f4=fopen("./01.txt", "r");
39
+ f3=fopen("./01.txt", "r");
42
- if(f4==NULL){
40
+ if(f3==NULL){
43
- printf("ファイルオープンに失敗しました4。\n");
41
+ printf("ファイルオープンに失敗しました3。\n");
44
42
  return 1;
45
43
  }
46
- fclose(f4);
44
+ fclose(f3);
47
45
 
48
46
  for(i=0; i<=9; i++){
49
47
  if(i<9){
@@ -52,12 +50,12 @@
52
50
  sprintf(fname, "%d.txt", i+1);
53
51
  }
54
52
  printf("%s\n", fname);
55
- f5=fopen("fname", "r");
53
+ f4=fopen("fname", "r");
56
- if(f5==NULL){
54
+ if(f4==NULL){
57
- printf("ファイルオープンに失敗しました5。\n");
55
+ printf("ファイルオープンに失敗しました4。\n");
58
56
  return 1;
59
57
  }else{
60
- while( fscanf(f5, "%lf" , &temp) == 1 ) {
58
+ while( fscanf(f4, "%lf" , &temp) == 1 ) {
61
59
  if(max<=temp){
62
60
  max=temp;
63
61
  }else if(temp<=min){
@@ -69,7 +67,7 @@
69
67
  ave=sum/j;
70
68
  fprintf(f2, "ファイル%s中の数値の最大値は%lf,最小値は%lf,\n平均値は%lfです。\n", fname, max, min, ave);
71
69
  }
72
- fclose(f5);
70
+ fclose(f4);
73
71
  }
74
72
 
75
73
  fclose(f1);
@@ -90,7 +88,7 @@
90
88
  ##### 上記の詳細・結果
91
89
  「ファイルの中のファイルを開く方法」などで調べましたがいいものがヒットせず、途方に暮れています。
92
90
 
93
- また、zipファイルではなく、普通のファイル(Q2)の中のファイル(01.txtなど)を読み込むのも試しましたが、同様に上手く動作しませんでした。
91
+ ~~また、zipファイルではなく、普通のファイル(Q2)の中のファイル(01.txtなど)を読み込むのも試しましたが、同様に上手く動作しませんでした。~~(※質問内容訂正のため削除)
94
92
 
95
93
  ### 補足
96
94
  ファイル名が連番になっているので、[このサイト](https://oshiete.goo.ne.jp/qa/1538336.html)を参考にしてファイル名の検索および読み込みを行うようプログラムしました。
@@ -98,3 +96,6 @@
98
96
  Q2 (2).zipファイルを添付したいのですが、やり方がわからないのでファイルの場所をスクショしたものを添付いたします。
99
97
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-21/80de2b83-b41e-4a9d-8478-fa810bd0b7d9.png)
100
98
 
99
+ [修正および補足内容]
100
+ ・ソースコードおよび「発生している問題・わからないこと」を修正いたしました。
101
+ ・これは学校の課題で、課題文を一部抜粋いたしますと、「以下の圧縮ファイル(zip形式)内にある連番となっているテキストファイル内の数値データ(実数)を読み込み...」となっています。