回答編集履歴

7

変更

2016/10/20 07:07

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -189,3 +189,79 @@
189
189
 
190
190
 
191
191
 
192
+
193
+ ちょっと書き方が良くないので修正しました。fscanfのセパレータのデフォルトはTAB,空白でした。
194
+
195
+ ```c
196
+
197
+ #include <stdio.h>
198
+
199
+ #include <string.h>
200
+
201
+
202
+
203
+ int main(int argc,char *argv[])
204
+
205
+ {
206
+
207
+ int i;
208
+
209
+ if (argc != 2){
210
+
211
+ printf("ファイルが指定されていません\n");
212
+
213
+ return -1;
214
+
215
+ }
216
+
217
+
218
+
219
+ FILE *fp;
220
+
221
+ char *fname = argv[1];
222
+
223
+ fp = fopen( fname, "r" );
224
+
225
+ if( fp == NULL ){
226
+
227
+ printf( "%sファイルが開けません¥n", fname );
228
+
229
+ return -1;
230
+
231
+ }
232
+
233
+
234
+
235
+ char mbuf[12][20] = {0};
236
+
237
+ char wbuf[7][20] = {0};
238
+
239
+ fscanf(fp,"%s%s%s%s%s%s%s", wbuf, wbuf+1, wbuf+2, wbuf+3, wbuf+4, wbuf+5, wbuf+6);
240
+
241
+ fscanf(fp,"%s%s%s%s%s%s%s%s%s%s%s%s", mbuf, mbuf+1, mbuf+2, mbuf+3, mbuf+4,
242
+
243
+ mbuf+5, mbuf+6, mbuf+7, mbuf+8, mbuf+9, mbuf+10, mbuf+11);
244
+
245
+ fclose( fp );
246
+
247
+
248
+
249
+ //date +'%w %m %-d %T %Z %Y' 4 10 20 09:53:08 JST 2016
250
+
251
+ int mon, week, day;
252
+
253
+ char tim[10]={0}, zon[10]={0}, yar[10]={0};
254
+
255
+ scanf("%d%d%d%s%s%s", &week, &mon, &day, tim, zon, yar);
256
+
257
+ printf("%s %s %d %s %s %s\n", wbuf[week], mbuf[mon-1], day, tim, zon, yar);
258
+
259
+ return 0;
260
+
261
+ }
262
+
263
+ ```
264
+
265
+
266
+
267
+

6

追加

2016/10/20 07:07

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -79,3 +79,113 @@
79
79
  }
80
80
 
81
81
  ```
82
+
83
+
84
+
85
+ すみません遅れてしまいました。急な野暮用が発生したので・・・・・
86
+
87
+ ```
88
+
89
+ 解説を付けさせて頂きます。まずこのプログラムの概要
90
+
91
+
92
+
93
+ Linuxのdateにて日付を取得する様にします、その際にタイムゾーンは
94
+
95
+ 標準(EDT)にて表示、さらにweekdayは番号、0スタートの日曜日で出力
96
+
97
+ する様にします。
98
+
99
+
100
+
101
+  TZ=EDT date +'%w %m %-d %T %Z %Y' と実行すると
102
+
103
+  4 10 20 04:27:21 EDT 2016 が得られるとします。
104
+
105
+
106
+
107
+ 上記の場合4なので木曜日になります。もし動きが変であればこの結果
108
+
109
+ が得られていないかをご確認ください。OSにより違う表示の場合が有る
110
+
111
+ かもしれません。
112
+
113
+
114
+
115
+ ご指定のファイルfr.txtは、日曜始まりになっているのでこれを利用
116
+
117
+ する事とします。
118
+
119
+ Dimanche Lundi Mardi Mercredi Jeudi Vendredi Samedi
120
+
121
+
122
+
123
+ 月は10ですので調度10番目の文字列とします。
124
+
125
+
126
+
127
+
128
+
129
+ 以下ソースの中身とインラインにてご説明です。
130
+
131
+ char mbuf[12][20]={0};
132
+
133
+ char wbuf[7][20]={0};
134
+
135
+ //mbuf 月を格納するエリアを確保します。20文字×12の配列で初期値は0(0x00)とします。
136
+
137
+ //同様にwbufエリアを取ります。
138
+
139
+
140
+
141
+ fscanf(fp, "%s %s %s %s %s %s %s\n", wbuf[0], wbuf[1], wbuf[2], wbuf[3], wbuf[4], wbuf[5], wbuf[6]);
142
+
143
+ fscanf(fp, "%s %s %s %s %s %s %s %s %s %s %s %s\n", mbuf[0], mbuf[1], mbuf[2], mbuf[3], mbuf[4],
144
+
145
+ mbuf[5], mbuf[6], mbuf[7], mbuf[8], mbuf[9], mbuf[10], mbuf[11]);
146
+
147
+ //ファイルfpから文字列と数字は一度に取得するfscanfを使ってwbuf配列に文字列を設定します。
148
+
149
+ //"%s %s %s %s %s %s %s\n"は、ブランクでセパレートされた7個の文字列のファイル1行の形を指定しています。
150
+
151
+ //fscanfは右から順にwbuf[0]へ1番目の文字列、wbuf[1]へ2番目と入れて7番目の配列に文字列を設定します。
152
+
153
+ //次のfscanfはファイルの二行目を読込み同様にmbufへ文字列を設定します。
154
+
155
+
156
+
157
+ fclose( fp );
158
+
159
+
160
+
161
+ int mon, week, day;
162
+
163
+ char tim[10]={0}, zon[10]={0}, yar[10]={0};
164
+
165
+
166
+
167
+ scanf("%d %d %d %s %s %s\n", &week, &mon, &day, tim, zon, yar);
168
+
169
+ //scanfは標準入力stdinからの読込みを行います。dateがパイプされたストリームが読み込まれます。
170
+
171
+ //このストリームには数字と文字列が混在しているので%dで数字、%sで文字列として各項目に値を設定します。
172
+
173
+
174
+
175
+ printf("%s %s %d %s %s %s\n", wbuf[week], mbuf[mon-1], day, tim, zon, yar);
176
+
177
+ //printfは標準出力へのものです、その際weekは0スタートでしたのでそのまま配列で配置して月は1からのスタートなので-1を行い配置し%sにて出力します。
178
+
179
+ return 0;
180
+
181
+ }
182
+
183
+ ```
184
+
185
+
186
+
187
+ 疑問がございますれば、お知らせください。
188
+
189
+
190
+
191
+

5

変更

2016/10/20 05:46

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
File without changes

4

変更

2016/10/20 02:37

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -48,13 +48,11 @@
48
48
 
49
49
 
50
50
 
51
- char mbuf[12][20];
51
+ char mbuf[12][20]={0};
52
52
 
53
- char wbuf[7][20];
53
+ char wbuf[7][20]={0};
54
54
 
55
- memset( mbuf, 0x00, sizeof(mbuf));
56
55
 
57
- memset( wbuf, 0x00, sizeof(wbuf));
58
56
 
59
57
  fscanf(fp, "%s %s %s %s %s %s %s\n", wbuf[0], wbuf[1], wbuf[2], wbuf[3], wbuf[4], wbuf[5], wbuf[6]);
60
58
 
@@ -68,13 +66,9 @@
68
66
 
69
67
  int mon, week, day;
70
68
 
71
- char tim[10], zon[10], yar[10];
69
+ char tim[10]={0}, zon[10]={0}, yar[10]={0};
72
70
 
73
- memset( tim, 0x00, sizeof(tim));
74
71
 
75
- memset( zon, 0x00, sizeof(zon));
76
-
77
- memset( yar, 0x00, sizeof(yar));
78
72
 
79
73
  scanf("%d %d %d %s %s %s\n", &week, &mon, &day, tim, zon, yar);
80
74
 

3

修正

2016/10/20 02:37

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -52,9 +52,9 @@
52
52
 
53
53
  char wbuf[7][20];
54
54
 
55
- memset( mbuf , 0x00 , sizeof(mbuf));
55
+ memset( mbuf, 0x00, sizeof(mbuf));
56
56
 
57
- memset( wbuf , 0x00 , sizeof(wbuf));
57
+ memset( wbuf, 0x00, sizeof(wbuf));
58
58
 
59
59
  fscanf(fp, "%s %s %s %s %s %s %s\n", wbuf[0], wbuf[1], wbuf[2], wbuf[3], wbuf[4], wbuf[5], wbuf[6]);
60
60
 
@@ -70,6 +70,12 @@
70
70
 
71
71
  char tim[10], zon[10], yar[10];
72
72
 
73
+ memset( tim, 0x00, sizeof(tim));
74
+
75
+ memset( zon, 0x00, sizeof(zon));
76
+
77
+ memset( yar, 0x00, sizeof(yar));
78
+
73
79
  scanf("%d %d %d %s %s %s\n", &week, &mon, &day, tim, zon, yar);
74
80
 
75
81
  printf("%s %s %d %s %s %s\n", wbuf[week], mbuf[mon-1], day, tim, zon, yar);

2

変更

2016/10/20 02:32

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -66,8 +66,6 @@
66
66
 
67
67
 
68
68
 
69
- //date +'%w %m %-d %T %Z %Y' 10 4 20 09:53:08 JST 2016
70
-
71
69
  int mon, week, day;
72
70
 
73
71
  char tim[10], zon[10], yar[10];

1

変更

2016/10/20 02:23

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -11,6 +11,8 @@
11
11
  ```c
12
12
 
13
13
  #include <stdio.h>
14
+
15
+ #include <string.h>
14
16
 
15
17
 
16
18
 
@@ -50,6 +52,10 @@
50
52
 
51
53
  char wbuf[7][20];
52
54
 
55
+ memset( mbuf , 0x00 , sizeof(mbuf));
56
+
57
+ memset( wbuf , 0x00 , sizeof(wbuf));
58
+
53
59
  fscanf(fp, "%s %s %s %s %s %s %s\n", wbuf[0], wbuf[1], wbuf[2], wbuf[3], wbuf[4], wbuf[5], wbuf[6]);
54
60
 
55
61
  fscanf(fp, "%s %s %s %s %s %s %s %s %s %s %s %s\n", mbuf[0], mbuf[1], mbuf[2], mbuf[3], mbuf[4],