質問編集履歴
6
文法修正、その他加筆しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -90,22 +90,23 @@
|
|
90
90
|
|
91
91
|
if (con_fp == NULL) // 2・・・読み込み部分
|
92
92
|
printf("\a制御ファイルをオープンできません。\n");
|
93
|
-
else
|
93
|
+
else{
|
94
|
+
fscanf(con_fp, "%s", con_str);
|
95
|
+
fclose(con_fp);
|
94
|
-
|
96
|
+
}
|
95
97
|
|
96
98
|
/*----- ここより上に解答を記述してください -----*/
|
97
99
|
if(con_fp != NULL && strcmp(con_str, SET_TIME) == 0){ // 2・・・SETTIMEが書かれるまで待つ部分
|
98
100
|
/*----- ここより下に解答を記述してください -----*/
|
99
101
|
|
100
|
-
|
102
|
+
tim_fp = fopen(TIM_NAME, "r");
|
101
103
|
|
102
|
-
tim_fp = fopen(CON_NAME, "r");
|
103
|
-
|
104
104
|
if (tim_fp == NULL) // 3・・・時間ファイルから日時を読み込む
|
105
105
|
printf("\a時間ファイルをオープンできません。\n");
|
106
106
|
else{
|
107
|
-
|
107
|
+
fscanf(tim_fp, "%s", tim_str);
|
108
|
+
while (tim_str){
|
108
|
-
str[int_c[i]] =
|
109
|
+
str[int_c[i]] = tim_str;
|
109
110
|
i++;
|
110
111
|
}
|
111
112
|
fclose(tim_fp);
|
@@ -121,8 +122,8 @@
|
|
121
122
|
if ((con_fp = fopen(CON_NAME, "w")) == NULL)
|
122
123
|
printf("\a制御ファイルをオープンできません。\n");
|
123
124
|
else{
|
124
|
-
printf("\a制御ファイルをオープンしました。\n");
|
125
125
|
fprintf(con_fp, GET_TIME); // 5・・・制御ファイルにGET_TIMEを書き込む
|
126
|
+
fclose(con_fp);
|
126
127
|
}
|
127
128
|
|
128
129
|
/*----- ここより上に解答を記述してください -----*/
|
@@ -133,5 +134,5 @@
|
|
133
134
|
}
|
134
135
|
```
|
135
136
|
### 試したこと
|
136
|
-
間違っているかもしれませんがプログラムは
|
137
|
+
間違っているかもしれませんがプログラムは一応最後まで書けました。
|
137
|
-
コンパイルエラーは起きませんが「制御ファイルがオープンできません」と連続で表示されてしまいます。
|
138
|
+
コンパイルエラーは起きませんが「制御ファイルがオープンできません」と連続で表示されてしまいます。3と4のところがうまくいっていない原因なのかなと個人的に思っています。
|
5
文法修正、その他加筆しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -26,6 +26,17 @@
|
|
26
26
|
|
27
27
|
ap1401.exeの処理1と2の間にap1401_SEND.exeの処理が入ります。
|
28
28
|
※すいません!送信プログラムの処理は勝手にプログラムのほうでやってくれるみたいなので作るのは課題プログラムのほうの処理だけみたいです。
|
29
|
+
処理の順序ごとの画面も載せます
|
30
|
+
「制御ファイル」に「GET_TIME」
|
31
|
+

|
32
|
+
送信プログラムの中身
|
33
|
+

|
34
|
+
送信プログラムが「時間ファイル」に自動で日時を書き込む
|
35
|
+

|
36
|
+
「制御ファイル」に「SET_TIME」が書かれる
|
37
|
+

|
38
|
+
この後課題プログラム3に移る
|
39
|
+
|
29
40
|
### 表示例
|
30
41
|
2020年07月27日 17時25分01秒
|
31
42
|
2020年07月27日 17時25分02秒
|
4
ソースコードできる限りやって更新しました
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
C言語:ファイルにて日時を取得するプログラムを作成したい
|
1
|
+
C言語:ファイルにて日時を取得するプログラムを作成したい
|
body
CHANGED
@@ -58,39 +58,62 @@
|
|
58
58
|
int i;
|
59
59
|
|
60
60
|
/*----- ここより下に解答を記述してください -----*/
|
61
|
+
|
61
62
|
int ch;
|
62
|
-
int fp;
|
63
63
|
|
64
|
+
con_fp = fopen(CON_NAME, "w");
|
65
|
+
|
64
|
-
if (
|
66
|
+
if (con_fp == NULL) // 制御ファイルオープン
|
65
67
|
printf("\a制御ファイルをオープンできません。\n");
|
66
|
-
else if ((tim_fp = fopen(TIM_NAME, "w+")) == NULL) // 時間ファイルオープン
|
67
|
-
printf("\a時間ファイルをオープンできません。\n");
|
68
|
-
else
|
68
|
+
else{
|
69
|
-
|
69
|
+
fprintf(con_fp, GET_TIME); // 1・・・制御ファイルにGET_TIMEを書き込む
|
70
|
+
fclose(con_fp);
|
71
|
+
}
|
70
72
|
|
71
|
-
fprintf(con_fp, GET_TIME); // 1・・・制御ファイルにGET_TIMEを書き込む
|
72
73
|
/*----- ここより上に解答を記述してください -----*/
|
73
74
|
|
74
75
|
while(1){
|
75
76
|
/*----- ここより下に解答を記述してください -----*/
|
77
|
+
|
78
|
+
con_fp = fopen(CON_NAME, "r");
|
79
|
+
|
76
|
-
|
80
|
+
if (con_fp == NULL) // 2・・・読み込み部分
|
81
|
+
printf("\a制御ファイルをオープンできません。\n");
|
82
|
+
else
|
83
|
+
;
|
84
|
+
|
77
85
|
/*----- ここより上に解答を記述してください -----*/
|
78
|
-
|
79
86
|
if(con_fp != NULL && strcmp(con_str, SET_TIME) == 0){ // 2・・・SETTIMEが書かれるまで待つ部分
|
80
87
|
/*----- ここより下に解答を記述してください -----*/
|
88
|
+
|
89
|
+
fclose(con_fp);
|
90
|
+
|
91
|
+
tim_fp = fopen(CON_NAME, "r");
|
92
|
+
|
81
|
-
|
93
|
+
if (tim_fp == NULL) // 3・・・時間ファイルから日時を読み込む
|
94
|
+
printf("\a時間ファイルをオープンできません。\n");
|
95
|
+
else{
|
96
|
+
while ((ch = fgetc(tim_fp)) != EOF){ // 4・・・画面に日時を表示する
|
97
|
+
str[int_c[i]] = ch;
|
98
|
+
i++;
|
99
|
+
}
|
100
|
+
fclose(tim_fp);
|
101
|
+
printf("%s\n", str);
|
102
|
+
}
|
103
|
+
|
82
104
|
/*----- ここより上に解答を記述してください -----*/
|
83
105
|
|
84
106
|
//------------------------------------------------
|
85
107
|
|
86
108
|
/*----- ここより下に解答を記述してください -----*/
|
109
|
+
|
110
|
+
if ((con_fp = fopen(CON_NAME, "w")) == NULL)
|
111
|
+
printf("\a制御ファイルをオープンできません。\n");
|
112
|
+
else{
|
113
|
+
printf("\a制御ファイルをオープンしました。\n");
|
87
|
-
|
114
|
+
fprintf(con_fp, GET_TIME); // 5・・・制御ファイルにGET_TIMEを書き込む
|
88
|
-
str[int_c[i]] = ch;
|
89
|
-
i++;
|
90
115
|
}
|
91
|
-
|
116
|
+
|
92
|
-
|
93
|
-
fprintf(con_fp, "GET_TIME\n"); // 5・・・制御ファイルにGET_TIMEを書き込む
|
94
117
|
/*----- ここより上に解答を記述してください -----*/
|
95
118
|
}
|
96
119
|
}
|
@@ -99,4 +122,5 @@
|
|
99
122
|
}
|
100
123
|
```
|
101
124
|
### 試したこと
|
102
|
-
間違っているかもしれませんがプログラムは途中まで書けました。
|
125
|
+
間違っているかもしれませんがプログラムは途中まで書けました。
|
126
|
+
コンパイルエラーは起きませんが「制御ファイルがオープンできません」と連続で表示されてしまいます。
|
3
ソースコードできる限りやって更新しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -54,43 +54,43 @@
|
|
54
54
|
FILE *con_fp; /* 制御ファイル */
|
55
55
|
FILE *tim_fp; /* 時間ファイル */
|
56
56
|
static char str[] = "9999年99月99日 99時99分99秒";
|
57
|
-
int int_c[] = { 0, 1, 2, 3, 6, 7, 10, 11, 16, 17, 20, 21, 24, 25};
|
57
|
+
int int_c[] = { 0, 1, 2, 3, 6, 7, 10, 11, 16, 17, 20, 21, 24, 25};
|
58
58
|
int i;
|
59
59
|
|
60
60
|
/*----- ここより下に解答を記述してください -----*/
|
61
|
+
int ch;
|
62
|
+
int fp;
|
63
|
+
|
61
|
-
if ((con_fp = fopen(CON_NAME, "w")) == NULL)
|
64
|
+
if ((con_fp = fopen(CON_NAME, "w+")) == NULL) // 制御ファイルオープン
|
62
65
|
printf("\a制御ファイルをオープンできません。\n");
|
63
|
-
else if ((tim_fp = fopen(TIM_NAME, "w")) == NULL)
|
66
|
+
else if ((tim_fp = fopen(TIM_NAME, "w+")) == NULL) // 時間ファイルオープン
|
64
67
|
printf("\a時間ファイルをオープンできません。\n");
|
65
68
|
else
|
66
|
-
printf("制御
|
69
|
+
printf("\a制御と時間ファイルをオープンできました。\n");
|
70
|
+
|
71
|
+
fprintf(con_fp, GET_TIME); // 1・・・制御ファイルにGET_TIMEを書き込む
|
67
72
|
/*----- ここより上に解答を記述してください -----*/
|
68
73
|
|
69
74
|
while(1){
|
70
75
|
/*----- ここより下に解答を記述してください -----*/
|
71
|
-
current = time(NULL); /* 現在の暦時刻 */
|
72
|
-
timer = localtime(¤t); /* 要素別の時刻 */
|
73
|
-
if(timer->tm_sec != tm_sec){
|
74
|
-
sprintf(str + 0,"%04d%02d%02d%02d%02d%02d", /* 年,月,日,時,分,秒 */
|
75
|
-
timer->tm_year + 1900, timer->tm_mon + 1, timer->tm_mday,
|
76
|
-
timer->tm_hour, timer->tm_min, timer->tm_sec);
|
77
|
-
|
76
|
+
fscanf(con_fp, "%d"); // 2・・・読み込む部分
|
78
|
-
}
|
79
77
|
/*----- ここより上に解答を記述してください -----*/
|
80
78
|
|
81
|
-
if(con_fp != NULL && strcmp(con_str, SET_TIME) == 0){
|
79
|
+
if(con_fp != NULL && strcmp(con_str, SET_TIME) == 0){ // 2・・・SETTIMEが書かれるまで待つ部分
|
82
80
|
/*----- ここより下に解答を記述してください -----*/
|
83
|
-
|
81
|
+
fscanf(tim_fp, "%d", fp); // 3・・・時間ファイルから日時を読み込む
|
84
|
-
|
85
|
-
|
86
82
|
/*----- ここより上に解答を記述してください -----*/
|
87
83
|
|
88
84
|
//------------------------------------------------
|
89
85
|
|
90
86
|
/*----- ここより下に解答を記述してください -----*/
|
91
|
-
|
87
|
+
while ((ch = fgetc(tim_fp)) != EOF){ // 4・・・画面に日時を表示する
|
92
|
-
|
88
|
+
str[int_c[i]] = ch;
|
93
|
-
|
89
|
+
i++;
|
90
|
+
}
|
91
|
+
printf("%c\n", str);
|
92
|
+
|
93
|
+
fprintf(con_fp, "GET_TIME\n"); // 5・・・制御ファイルにGET_TIMEを書き込む
|
94
94
|
/*----- ここより上に解答を記述してください -----*/
|
95
95
|
}
|
96
96
|
}
|
@@ -99,5 +99,4 @@
|
|
99
99
|
}
|
100
100
|
```
|
101
101
|
### 試したこと
|
102
|
-
間違っているかもしれませんがプログラムは途中まで書けました。
|
102
|
+
間違っているかもしれませんがプログラムは途中まで書けました。
|
103
|
-
ファイルの展開部分と日時の取得部分です。
|
2
送信プログラムの事で間違っている部分がありました
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
C言語:ファイルにて日時を取得するプログラムを作成したい
|
1
|
+
C言語:ファイルにて日時を取得するプログラムを作成したい(文を少し更新しました)
|
body
CHANGED
@@ -58,10 +58,6 @@
|
|
58
58
|
int i;
|
59
59
|
|
60
60
|
/*----- ここより下に解答を記述してください -----*/
|
61
|
-
time_t current;
|
62
|
-
struct tm *timer;
|
63
|
-
int tm_sec = 0;
|
64
|
-
|
65
61
|
if ((con_fp = fopen(CON_NAME, "w")) == NULL) /* 制御ファイルオープン */
|
66
62
|
printf("\a制御ファイルをオープンできません。\n");
|
67
63
|
else if ((tim_fp = fopen(TIM_NAME, "w")) == NULL) /* 時間ファイルオープン */
|
1
送信プログラムの事で間違っている部分がありました
title
CHANGED
File without changes
|
body
CHANGED
@@ -25,6 +25,7 @@
|
|
25
25
|
4.「1」へ戻る
|
26
26
|
|
27
27
|
ap1401.exeの処理1と2の間にap1401_SEND.exeの処理が入ります。
|
28
|
+
※すいません!送信プログラムの処理は勝手にプログラムのほうでやってくれるみたいなので作るのは課題プログラムのほうの処理だけみたいです。
|
28
29
|
### 表示例
|
29
30
|
2020年07月27日 17時25分01秒
|
30
31
|
2020年07月27日 17時25分02秒
|