質問編集履歴

6

文法修正、その他加筆しました

2020/07/28 08:39

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -182,9 +182,13 @@
182
182
 
183
183
  printf("\a制御ファイルをオープンできません。\n");
184
184
 
185
- else
185
+ else{
186
+
186
-
187
+ fscanf(con_fp, "%s", con_str);
188
+
189
+ fclose(con_fp);
190
+
187
- ;
191
+ }
188
192
 
189
193
 
190
194
 
@@ -196,11 +200,7 @@
196
200
 
197
201
 
198
202
 
199
- fclose(con_fp);
200
-
201
-
202
-
203
- tim_fp = fopen(CON_NAME, "r");
203
+ tim_fp = fopen(TIM_NAME, "r");
204
204
 
205
205
 
206
206
 
@@ -210,9 +210,11 @@
210
210
 
211
211
  else{
212
212
 
213
- while ((ch = fgetc(tim_fp)) != EOF){ // 4・・・画面に日時を表示する
213
+ fscanf(tim_fp, "%s", tim_str);
214
+
214
-
215
+ while (tim_str){
216
+
215
- str[int_c[i]] = ch;
217
+ str[int_c[i]] = tim_str;
216
218
 
217
219
  i++;
218
220
 
@@ -244,10 +246,10 @@
244
246
 
245
247
  else{
246
248
 
247
- printf("\a制御ファイルをオープンしました。\n");
248
-
249
249
  fprintf(con_fp, GET_TIME); // 5・・・制御ファイルにGET_TIMEを書き込む
250
250
 
251
+ fclose(con_fp);
252
+
251
253
  }
252
254
 
253
255
 
@@ -268,6 +270,6 @@
268
270
 
269
271
  ### 試したこと
270
272
 
271
- 間違っているかもしれませんがプログラムは途中まで書けました。
273
+ 間違っているかもしれませんがプログラムは一応最後まで書けました。
272
-
274
+
273
- コンパイルエラーは起きませんが「制御ファイルがオープンできません」と連続で表示されてしまいます。
275
+ コンパイルエラーは起きませんが「制御ファイルがオープンできません」と連続で表示されてしまいます。3と4のところがうまくいっていない原因なのかなと個人的に思っています。

5

文法修正、その他加筆しました

2020/07/28 08:39

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -54,6 +54,28 @@
54
54
 
55
55
  ※すいません!送信プログラムの処理は勝手にプログラムのほうでやってくれるみたいなので作るのは課題プログラムのほうの処理だけみたいです。
56
56
 
57
+ 処理の順序ごとの画面も載せます
58
+
59
+ 「制御ファイル」に「GET_TIME」
60
+
61
+ ![課題プログラム1](a5370f0461d598b7f11dd23b3a65c38d.png)
62
+
63
+ 送信プログラムの中身
64
+
65
+ ![イメージ説明](ca0d08da4992257a1fa84e46e057012c.png)
66
+
67
+ 送信プログラムが「時間ファイル」に自動で日時を書き込む
68
+
69
+ ![イメージ説明](8eaffa13e5005f29421277d6e9118187.png)
70
+
71
+ 「制御ファイル」に「SET_TIME」が書かれる
72
+
73
+ ![イメージ説明](1cfb906161b6083e225b4672513b82cf.png)
74
+
75
+ この後課題プログラム3に移る
76
+
77
+
78
+
57
79
  ### 表示例
58
80
 
59
81
  2020年07月27日 17時25分01秒

4

ソースコードできる限りやって更新しました

2020/07/28 08:34

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- C言語:ファイルにて日時を取得するプログラムを作成したい(文を少し更新しました)
1
+ C言語:ファイルにて日時を取得するプログラムを作成したい
test CHANGED
@@ -118,27 +118,29 @@
118
118
 
119
119
  /*----- ここより下に解答を記述してください -----*/
120
120
 
121
+
122
+
121
123
  int ch;
122
124
 
125
+
126
+
123
- int fp;
127
+ con_fp = fopen(CON_NAME, "w");
124
-
125
-
126
-
128
+
129
+
130
+
127
- if ((con_fp = fopen(CON_NAME, "w+")) == NULL) // 制御ファイルオープン
131
+ if (con_fp == NULL) // 制御ファイルオープン
128
132
 
129
133
  printf("\a制御ファイルをオープンできません。\n");
130
134
 
131
- else if ((tim_fp = fopen(TIM_NAME, "w+")) == NULL) // 時間ファイルオープン
132
-
133
- printf("\a時間ファイルをオープンできません。\n");
134
-
135
- else
135
+ else{
136
-
137
- printf("\a制御と時間ファイルをオープンできました。\n");
136
+
138
-
139
-
140
-
141
- fprintf(con_fp, GET_TIME); // 1・・・制御ファイルにGET_TIMEを書き込む
137
+ fprintf(con_fp, GET_TIME); // 1・・・制御ファイルにGET_TIMEを書き込む
138
+
139
+ fclose(con_fp);
140
+
141
+ }
142
+
143
+
142
144
 
143
145
  /*----- ここより上に解答を記述してください -----*/
144
146
 
@@ -148,44 +150,88 @@
148
150
 
149
151
  /*----- ここより下に解答を記述してください -----*/
150
152
 
153
+
154
+
155
+ con_fp = fopen(CON_NAME, "r");
156
+
157
+
158
+
151
- fscanf(con_fp, "%d"); // 2・・・読み込部分
159
+ if (con_fp == NULL) // 2・・・読み込部分
160
+
161
+ printf("\a制御ファイルをオープンできません。\n");
162
+
163
+ else
164
+
165
+ ;
166
+
167
+
152
168
 
153
169
  /*----- ここより上に解答を記述してください -----*/
154
170
 
171
+ if(con_fp != NULL && strcmp(con_str, SET_TIME) == 0){ // 2・・・SETTIMEが書かれるまで待つ部分
172
+
173
+ /*----- ここより下に解答を記述してください -----*/
174
+
175
+
176
+
177
+ fclose(con_fp);
178
+
179
+
180
+
181
+ tim_fp = fopen(CON_NAME, "r");
182
+
183
+
184
+
185
+ if (tim_fp == NULL) // 3・・・時間ファイルから日時を読み込む
186
+
187
+ printf("\a時間ファイルをオープンできません。\n");
188
+
189
+ else{
190
+
191
+ while ((ch = fgetc(tim_fp)) != EOF){ // 4・・・画面に日時を表示する
192
+
193
+ str[int_c[i]] = ch;
194
+
195
+ i++;
196
+
197
+ }
198
+
199
+ fclose(tim_fp);
200
+
201
+ printf("%s\n", str);
202
+
203
+ }
204
+
205
+
206
+
207
+ /*----- ここより上に解答を記述してください -----*/
208
+
209
+
210
+
211
+ //------------------------------------------------
212
+
213
+
214
+
215
+ /*----- ここより下に解答を記述してください -----*/
216
+
217
+
218
+
219
+ if ((con_fp = fopen(CON_NAME, "w")) == NULL)
220
+
221
+ printf("\a制御ファイルをオープンできません。\n");
222
+
223
+ else{
224
+
225
+ printf("\a制御ファイルをオープンしました。\n");
226
+
227
+ fprintf(con_fp, GET_TIME); // 5・・・制御ファイルにGET_TIMEを書き込む
228
+
229
+ }
230
+
155
231
 
156
232
 
157
- if(con_fp != NULL && strcmp(con_str, SET_TIME) == 0){ // 2・・・SETTIMEが書かれるまで待つ部分
158
-
159
- /*----- ここより下に解答を記述してください -----*/
160
-
161
- fscanf(tim_fp, "%d", fp); // 3・・・時間ファイルから日時を読み込む
162
-
163
233
  /*----- ここより上に解答を記述してください -----*/
164
234
 
165
-
166
-
167
- //------------------------------------------------
168
-
169
-
170
-
171
- /*----- ここより下に解答を記述してください -----*/
172
-
173
- while ((ch = fgetc(tim_fp)) != EOF){ // 4・・・画面に日時を表示する
174
-
175
- str[int_c[i]] = ch;
176
-
177
- i++;
178
-
179
- }
180
-
181
- printf("%c\n", str);
182
-
183
-
184
-
185
- fprintf(con_fp, "GET_TIME\n"); // 5・・・制御ファイルにGET_TIMEを書き込む
186
-
187
- /*----- ここより上に解答を記述してください -----*/
188
-
189
235
  }
190
236
 
191
237
  }
@@ -201,3 +247,5 @@
201
247
  ### 試したこと
202
248
 
203
249
  間違っているかもしれませんがプログラムは途中まで書けました。
250
+
251
+ コンパイルエラーは起きませんが「制御ファイルがオープンできません」と連続で表示されてしまいます。

3

ソースコードできる限りやって更新しました

2020/07/28 06:39

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -110,7 +110,7 @@
110
110
 
111
111
  static char str[] = "9999年99月99日 99時99分99秒";
112
112
 
113
- int int_c[] = { 0, 1, 2, 3, 6, 7, 10, 11, 16, 17, 20, 21, 24, 25}; /* 配列strの数字の部分の添え字
113
+ int int_c[] = { 0, 1, 2, 3, 6, 7, 10, 11, 16, 17, 20, 21, 24, 25};
114
114
 
115
115
  int i;
116
116
 
@@ -118,17 +118,27 @@
118
118
 
119
119
  /*----- ここより下に解答を記述してください -----*/
120
120
 
121
+ int ch;
122
+
123
+ int fp;
124
+
125
+
126
+
121
- if ((con_fp = fopen(CON_NAME, "w")) == NULL) /* 制御ファイルオープン */
127
+ if ((con_fp = fopen(CON_NAME, "w+")) == NULL) // 制御ファイルオープン
122
128
 
123
129
  printf("\a制御ファイルをオープンできません。\n");
124
130
 
125
- else if ((tim_fp = fopen(TIM_NAME, "w")) == NULL) /* 時間ファイルオープン */
131
+ else if ((tim_fp = fopen(TIM_NAME, "w+")) == NULL) // 時間ファイルオープン
126
132
 
127
133
  printf("\a時間ファイルをオープンできません。\n");
128
134
 
129
135
  else
130
136
 
131
- printf("制御時間ファイルをオープンました。\n");
137
+ printf("\a制御時間ファイルをオープンできました。\n");
138
+
139
+
140
+
141
+ fprintf(con_fp, GET_TIME); // 1・・・制御ファイルにGET_TIMEを書き込む
132
142
 
133
143
  /*----- ここより上に解答を記述してください -----*/
134
144
 
@@ -138,56 +148,46 @@
138
148
 
139
149
  /*----- ここより下に解答を記述してください -----*/
140
150
 
141
- current = time(NULL); /* 現在の暦時刻 */
142
-
143
- timer = localtime(&current); /* 要素別の時刻 */
144
-
145
- if(timer->tm_sec != tm_sec){
146
-
147
- sprintf(str + 0,"%04d%02d%02d%02d%02d%02d", /* 年,月,日,時,分,秒 */
148
-
149
- timer->tm_year + 1900, timer->tm_mon + 1, timer->tm_mday,
150
-
151
- timer->tm_hour, timer->tm_min, timer->tm_sec);
152
-
153
- *(str + 13) = '\0'; /* 終端文字列 */
151
+ fscanf(con_fp, "%d"); // 2・・・読み込む部分
152
+
153
+ /*----- ここより上に解答を記述してください -----*/
154
+
155
+
156
+
157
+ if(con_fp != NULL && strcmp(con_str, SET_TIME) == 0){ // 2・・・SETTIMEが書かれるまで待つ部分
158
+
159
+ /*----- ここより下に解答を記述してください -----*/
160
+
161
+ fscanf(tim_fp, "%d", fp); // 3・・・時間ファイルから日時を読み込む
162
+
163
+ /*----- ここより上に解答を記述してください -----*/
164
+
165
+
166
+
167
+ //------------------------------------------------
168
+
169
+
170
+
171
+ /*----- ここより下に解答を記述してください -----*/
172
+
173
+ while ((ch = fgetc(tim_fp)) != EOF){ // 4・・・画面に日時を表示する
174
+
175
+ str[int_c[i]] = ch;
176
+
177
+ i++;
178
+
179
+ }
180
+
181
+ printf("%c\n", str);
182
+
183
+
184
+
185
+ fprintf(con_fp, "GET_TIME\n"); // 5・・・制御ファイルにGET_TIMEを書き込む
186
+
187
+ /*----- ここより上に解答を記述してください -----*/
154
188
 
155
189
  }
156
190
 
157
- /*----- ここより上に解答を記述してください -----*/
158
-
159
-
160
-
161
- if(con_fp != NULL && strcmp(con_str, SET_TIME) == 0){
162
-
163
- /*----- ここより下に解答を記述してください -----*/
164
-
165
-
166
-
167
-
168
-
169
-
170
-
171
- /*----- ここより上に解答を記述してください -----*/
172
-
173
-
174
-
175
- //------------------------------------------------
176
-
177
-
178
-
179
- /*----- ここより下に解答を記述してください -----*/
180
-
181
-
182
-
183
-
184
-
185
-
186
-
187
- /*----- ここより上に解答を記述してください -----*/
188
-
189
- }
190
-
191
191
  }
192
192
 
193
193
 
@@ -201,5 +201,3 @@
201
201
  ### 試したこと
202
202
 
203
203
  間違っているかもしれませんがプログラムは途中まで書けました。
204
-
205
- ファイルの展開部分と日時の取得部分です。

2

送信プログラムの事で間違っている部分がありました

2020/07/28 05:33

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- C言語:ファイルにて日時を取得するプログラムを作成したい
1
+ C言語:ファイルにて日時を取得するプログラムを作成したい(文を少し更新しました)
test CHANGED
@@ -118,14 +118,6 @@
118
118
 
119
119
  /*----- ここより下に解答を記述してください -----*/
120
120
 
121
- time_t current;
122
-
123
- struct tm *timer;
124
-
125
- int tm_sec = 0;
126
-
127
-
128
-
129
121
  if ((con_fp = fopen(CON_NAME, "w")) == NULL) /* 制御ファイルオープン */
130
122
 
131
123
  printf("\a制御ファイルをオープンできません。\n");

1

送信プログラムの事で間違っている部分がありました

2020/07/28 04:21

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -52,6 +52,8 @@
52
52
 
53
53
  ap1401.exeの処理1と2の間にap1401_SEND.exeの処理が入ります。
54
54
 
55
+ ※すいません!送信プログラムの処理は勝手にプログラムのほうでやってくれるみたいなので作るのは課題プログラムのほうの処理だけみたいです。
56
+
55
57
  ### 表示例
56
58
 
57
59
  2020年07月27日 17時25分01秒