質問編集履歴

2

最後の出力がうまくできない

2019/10/30 09:32

投稿

0126tami
0126tami

スコア60

test CHANGED
File without changes
test CHANGED
@@ -32,14 +32,6 @@
32
32
 
33
33
 
34
34
 
35
- ファイルを使って1つのテキストを配列として読み取るところまではわかるのですか
36
-
37
- 3つのテキストを読み取ることとそれを全て比較するやり方がわかりません。
38
-
39
- ちなみにテキストを3つに分けて考えることに固執しているわけではなくて
40
-
41
- 1つのテキストに3つ分のデータを入力して考える方が簡単ならその方法でも大丈夫です。
42
-
43
35
 
44
36
 
45
37
  コードを書くことが苦手なのでアドバイスをいただけないかと思っています。
@@ -54,9 +46,11 @@
54
46
 
55
47
  fgetc関数を使ってみたのですが
56
48
 
57
- 2個目のテキストからファイルが開せんとエラーで出るようになってしいました
49
+ 最後3つのテキストを1つのマスでかけて表示さる時に、ちゃんと1か0の数字が表示されせん
58
-
50
+
59
- ポインタと構造体が正直よわかってなのですが、アドバイスお願いします
51
+ fgetcをintに変換する方法を教えてださ
52
+
53
+ (atoi関数を使ってみてもダメでした)
60
54
 
61
55
 
62
56
 
@@ -64,8 +58,6 @@
64
58
 
65
59
  ```c言語
66
60
 
67
-
68
-
69
61
  #include <stdio.h>
70
62
 
71
63
  #include <stdlib.h>
@@ -76,11 +68,11 @@
76
68
 
77
69
  FILE *fp; // FILE型構造体
78
70
 
79
- char fname1[] = "red.txt";
71
+ static char fname1[] = "red.txt";
80
-
72
+
81
- char fname2[]="green.txt";
73
+ static char fname2[]="green.txt";
82
-
74
+
83
- char fname3[]="blue.txt";
75
+ static char fname3[]="blue.txt";
84
76
 
85
77
  char str[16];
86
78
 
@@ -92,61 +84,111 @@
92
84
 
93
85
  int n[25];
94
86
 
95
- int i=0;
87
+ int i,a,b,seki;
96
-
97
-
98
-
88
+
89
+
90
+
91
+
92
+
93
+
94
+
99
- fp = fopen(fname1, "r"); // ファイルを開く。失敗するとNULLを返す。
95
+ fp = fopen(fname1, "r"); // ファイルを開く。失敗するとNULLを返す。
96
+
97
+ if(fp == NULL) {
98
+
99
+ printf("%s file not open!\n", fname1);
100
+
101
+ return -1;
102
+
103
+ }
104
+
105
+
106
+
107
+ while((l[i]=fgetc(fp)) != EOF) {
108
+
109
+ i++;
110
+
111
+
112
+
113
+ }
114
+
115
+ printf("\n");
116
+
117
+ fclose(fp); // ファイルを閉じる
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+ fp = fopen(fname2, "r"); // ファイルを開く。失敗するとNULLを返す。
100
128
 
101
129
  if(fp == NULL) {
102
130
 
103
- printf("%s file not open!\n", fname1);
131
+ printf("%s file not open!\n", fname2);
104
132
 
105
133
  return -1;
106
134
 
107
135
  }
108
136
 
109
-
137
+ i=0;
110
-
138
+
111
- while((l[i]=fgetc(fp)) != EOF) {
139
+ while((m[i]=fgetc(fp)) != EOF) {
140
+
141
+
142
+
112
-
143
+ i++;
144
+
145
+
146
+
147
+ }
148
+
149
+ printf("\n");
150
+
151
+ fclose(fp); // ファイルを閉じる
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+ fp = fopen(fname3, "r"); // ファイルを開く。失敗するとNULLを返す。
164
+
165
+ if(fp == NULL) {
166
+
167
+ printf("%s file not open!\n", fname3);
168
+
113
- putchar(l[i]);
169
+ return -1;
170
+
171
+ }
172
+
173
+ i=0;
174
+
175
+ while((n[i]=fgetc(fp)) != EOF) {
176
+
177
+
178
+
179
+
114
180
 
115
181
  i++;
116
182
 
117
183
 
118
184
 
119
- }
185
+ }
120
-
121
- fclose(fp); // ファイルを閉じる
186
+
122
-
123
-
124
-
125
-
126
-
127
-
128
-
129
-
130
-
131
- fp = fopen(fname2, "r"); // ファイルを開く。失敗するとNULLを返す。
132
-
133
- if(fp == NULL) {
134
-
135
- printf("%s file not open!\n", fname2);
187
+ printf("\n");
136
-
137
- return -1;
188
+
138
-
139
- }
189
+
140
-
141
- while((m[i]=fgetc(fp)) != EOF) {
190
+
142
-
143
- putchar(m[i]);
191
+
144
-
145
- i++;
146
-
147
-
148
-
149
- }
150
192
 
151
193
  fclose(fp); // ファイルを閉じる
152
194
 
@@ -158,40 +200,52 @@
158
200
 
159
201
 
160
202
 
161
-
162
-
163
- fp = fopen(fname3, "r"); // ファイルを開く。失敗するとNULLを返す。
203
+ i=0;
164
-
204
+
205
+
206
+
165
- if(fp == NULL) {
207
+ for(a=0;a<5;a++){
208
+
209
+
210
+
166
-
211
+ for(b=0;b<5;b++){
212
+
213
+
214
+
215
+ seki=l[i]*m[i]*n[i];
216
+
167
- printf("%s file not open!\n", fname3);
217
+ printf("%c ",seki);
218
+
219
+
220
+
168
-
221
+ // printf("%c ",l[i]); 試しにl[i]を表示させてみてもダメ
222
+
223
+
224
+
169
- return -1;
225
+ i++;
170
-
226
+
171
- }
227
+ }
172
-
173
- while((n[i]=fgetc(fp)) != EOF) {
228
+
174
-
175
- putchar(n[i]);
229
+ printf("\n");
176
-
177
- i++;
230
+
178
-
179
-
180
-
181
- }
231
+ }
182
-
183
-
184
-
185
- fclose(fp); // ファイルを閉じる
232
+
186
-
187
-
188
-
233
+
234
+
235
+
236
+
237
+
238
+
189
- return 0;
239
+ return 0;
190
-
191
-
192
240
 
193
241
  }
194
242
 
195
243
 
196
244
 
245
+
246
+
247
+
248
+
249
+
250
+
197
251
  ```

1

コードの変更 fgetc関数 3つのテキストの比較がわからない

2019/10/30 09:32

投稿

0126tami
0126tami

スコア60

test CHANGED
File without changes
test CHANGED
@@ -50,9 +50,19 @@
50
50
 
51
51
 
52
52
 
53
+ 追記
54
+
53
- ```c言語
55
+ fgetc関数を使ってみたのですが
56
+
57
+ 2個目のテキストからファイルが開けませんとエラーで出るようになってしまいました。
58
+
59
+ ポインタと構造体が正直よくわかってないのですが、アドバイスお願いします
54
60
 
55
61
 
62
+
63
+
64
+
65
+ ```c言語
56
66
 
57
67
 
58
68
 
@@ -64,21 +74,33 @@
64
74
 
65
75
  int main(void) {
66
76
 
67
- FILE *fp; // FILE型構造体
77
+ FILE *fp; // FILE型構造体
68
78
 
69
- char fname[] = "test.txt";
79
+ char fname1[] = "red.txt";
80
+
81
+ char fname2[]="green.txt";
82
+
83
+ char fname3[]="blue.txt";
70
84
 
71
85
  char str[16];
72
86
 
73
- float f1, f2, f3, f4, f5;
87
+ int f1, f2, f3, f4, f5;
88
+
89
+ int l[25];
90
+
91
+ int m[25];
92
+
93
+ int n[25];
94
+
95
+ int i=0;
74
96
 
75
97
 
76
98
 
77
- fp = fopen(fname, "r"); // ファイルを開く。失敗するとNULLを返す。
99
+ fp = fopen(fname1, "r"); // ファイルを開く。失敗するとNULLを返す。
78
100
 
79
101
  if(fp == NULL) {
80
102
 
81
- printf("%s file not open!\n", fname);
103
+ printf("%s file not open!\n", fname1);
82
104
 
83
105
  return -1;
84
106
 
@@ -86,21 +108,89 @@
86
108
 
87
109
 
88
110
 
89
- while(fscanf(fp, "%s %f %f %f %f %f", str, &f1, &f2, &f3, &f4, &f5) != EOF) {
111
+ while((l[i]=fgetc(fp)) != EOF) {
90
112
 
113
+ putchar(l[i]);
114
+
115
+ i++;
116
+
117
+
118
+
119
+ }
120
+
121
+ fclose(fp); // ファイルを閉じる
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+ fp = fopen(fname2, "r"); // ファイルを開く。失敗するとNULLを返す。
132
+
133
+ if(fp == NULL) {
134
+
91
- printf("%s %.1f %.1f %.1f %.1f %.1f\n", str, f1, f2, f3, f4, f5);
135
+ printf("%s file not open!\n", fname2);
136
+
137
+ return -1;
138
+
139
+ }
140
+
141
+ while((m[i]=fgetc(fp)) != EOF) {
142
+
143
+ putchar(m[i]);
144
+
145
+ i++;
146
+
147
+
148
+
149
+ }
150
+
151
+ fclose(fp); // ファイルを閉じる
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+ fp = fopen(fname3, "r"); // ファイルを開く。失敗するとNULLを返す。
164
+
165
+ if(fp == NULL) {
166
+
167
+ printf("%s file not open!\n", fname3);
168
+
169
+ return -1;
170
+
171
+ }
172
+
173
+ while((n[i]=fgetc(fp)) != EOF) {
174
+
175
+ putchar(n[i]);
176
+
177
+ i++;
178
+
179
+
92
180
 
93
181
  }
94
182
 
95
183
 
96
184
 
97
- fclose(fp); // ファイルを閉じる
185
+ fclose(fp); // ファイルを閉じる
98
186
 
99
187
 
100
188
 
101
- return 0;
189
+ return 0;
102
190
 
103
191
 
192
+
193
+ }
104
194
 
105
195
 
106
196