teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

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

2020/07/28 08:39

投稿

退会済みユーザー
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
- fclose(con_fp);
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
- while ((ch = fgetc(tim_fp)) != EOF){ // 4・・・画面に日時を表示する
107
+ fscanf(tim_fp, "%s", tim_str);
108
+ while (tim_str){
108
- str[int_c[i]] = ch;
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

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

2020/07/28 08:39

投稿

退会済みユーザー
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
+ ![課題プログラム1](a5370f0461d598b7f11dd23b3a65c38d.png)
32
+ 送信プログラムの中身
33
+ ![イメージ説明](ca0d08da4992257a1fa84e46e057012c.png)
34
+ 送信プログラムが「時間ファイル」に自動で日時を書き込む
35
+ ![イメージ説明](8eaffa13e5005f29421277d6e9118187.png)
36
+ 「制御ファイル」に「SET_TIME」が書かれる
37
+ ![イメージ説明](1cfb906161b6083e225b4672513b82cf.png)
38
+ この後課題プログラム3に移る
39
+
29
40
  ### 表示例
30
41
  2020年07月27日 17時25分01秒
31
42
  2020年07月27日 17時25分02秒

4

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

2020/07/28 08:34

投稿

退会済みユーザー
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 ((con_fp = fopen(CON_NAME, "w+")) == NULL) // 制御ファイルオープン
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
- printf("\a制御と時間ファイルをオープンでました。\n");
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
- fscanf(con_fp, "%d"); // 2・・・読み込部分
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
- fscanf(tim_fp, "%d", fp); // 3・・・時間ファイルから日時を読み込む
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
- while ((ch = fgetc(tim_fp)) != EOF){ // 4・・・画面日時表示する
114
+ fprintf(con_fp, GET_TIME); // 5・・・制御ファイルGET_TIME書き込む
88
- str[int_c[i]] = ch;
89
- i++;
90
115
  }
91
- printf("%c\n", str);
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

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

2020/07/28 06:39

投稿

退会済みユーザー
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}; /* 配列strの数字の部分の添え字
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("制御時間ファイルをオープンました。\n");
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(&current); /* 要素別の時刻 */
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
- *(str + 13) = '\0'; /* 終端文字列 */
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

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

2020/07/28 05:33

投稿

退会済みユーザー
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

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

2020/07/28 04:21

投稿

退会済みユーザー
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秒