質問編集履歴

2

エラー内容の変更

2016/01/06 05:15

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -3,12 +3,6 @@
3
3
  $ gcc -o bcopy1 bcopy1.c -lpdcursesw
4
4
 
5
5
  。。。@naka ~/besten
6
-
7
- $ bcopy1
8
-
9
- パラメータが不正です。
10
-
11
- bcopy コピー元ファイル名 コピー先ファイル名
12
6
 
13
7
 
14
8
 

1

全体的にコードの見直しをしました。こんぱいるできるのですが、

2016/01/06 05:15

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,38 @@
1
+ 。。。@naka ~/besten
2
+
3
+ $ gcc -o bcopy1 bcopy1.c -lpdcursesw
4
+
5
+ 。。。@naka ~/besten
6
+
7
+ $ bcopy1
8
+
9
+ パラメータが不正です。
10
+
11
+ bcopy コピー元ファイル名 コピー先ファイル名
12
+
13
+
14
+
15
+ 。。。@naka ~/besten
16
+
17
+ $ bcopy1 dtfile dtfile3
18
+
19
+ ファイルdtfileがオープンできません。
20
+
21
+
22
+
23
+ 。。。@naka ~/besten
24
+
25
+ $
26
+
27
+
28
+
29
+
30
+
1
31
  データ"LACKNUM.DAT"をデータ"LACKNUM3.DAT"にコピー
2
32
 
3
- し、表示するプログラムですが、実行するとエラーがでてうまくいきません。どの当たりが悪いのかおしえてください
33
+ し、表示するプログラムですが、実行するとコンパイルはとおります。しかし上のようなエラーがでてうまくいきません。どの当たりが悪いのかおしえてください
34
+
35
+
4
36
 
5
37
  コード
6
38
 
@@ -40,7 +72,7 @@
40
72
 
41
73
  char dtfile[] = "LACKNUM.DAT"; // ファイル名
42
74
 
43
- char dtfil] = "LACKNUM3.DAT"; // 4, LACKNUM.DATに保存されているデータを記録するのに
75
+ char dtfile3[] = "LACKNUM3.DAT"; // 4, LACKNUM.DATに保存されているデータを記録するのに
44
76
 
45
77
  // 十分な数の配列"LACKNUM3.DAT" を確保して下さい。
46
78
 
@@ -58,11 +90,11 @@
58
90
 
59
91
 
60
92
 
61
- int main(void)
93
+ int main(int argc,char* argv[])
62
94
 
63
95
  {
64
96
 
65
- int n,num;
97
+ int i,n,num;
66
98
 
67
99
  FILE *fp, *fp3; // *fpと *fp3はファイルポインタ
68
100
 
@@ -74,25 +106,25 @@
74
106
 
75
107
 
76
108
 
77
- if ((fp = fopen(dtfile, "rb")) == NULL) {
109
+ if (argc != 3) {
78
110
 
79
- fprintf(stderr, "ファイル%sオープンきません。\n");
111
+ fprintf(stderr, "パラメータ不正。\n");
80
112
 
81
113
  fprintf(stderr, "bcopy コピー元ファイル名 コピー先ファイル名\n");
82
114
 
83
115
  } else {
84
116
 
85
- if ((fp = fopen(dtfile, "rb")) == NULL) {
117
+ if ((fp = fopen(*++argv, "rb")) == NULL) {
86
118
 
87
119
  /* *++argv=const char *filenameも ,"rb"=const char *modeもポインタ */
88
120
 
89
- fprintf(stderr, "ファイル%sがオープンできません。\n", dtfile);
121
+ fprintf(stderr, "ファイル%sがオープンできません。\n", *argv);
90
122
 
91
123
  return (1);
92
124
 
93
- } else if ((fp3 = fopen(dtfile3, "wb")) == NULL) {
125
+ } else if ((fp3 =fopen( *++argv, "wb")) == NULL) {
94
126
 
95
- fprintf(stderr, "ファイル%sがオープンできません。\n", dtfile3);
127
+ fprintf(stderr, "ファイル%sがオープンできません。\n", *argv);
96
128
 
97
129
  fclose(fp);
98
130
 
@@ -100,21 +132,15 @@
100
132
 
101
133
  } else {
102
134
 
103
- while ((n = fread(buf, sizeof(struct tm), 1, fp)) > 0){
135
+ while ( (n = fread(buf, BSIZE, 1, fp)) > 0){
104
136
 
105
137
  /* ファイルポインタfpからsizeof(struct tm) バイトのデータを
106
138
 
107
139
  1 個読み込み、読み込みデータ格納先のポインタbufに格納する */
108
140
 
109
- fwrite(buf,sizeof(struct tm), 1, fp3);
141
+ fwrite(buf,n, 1, fp3);
110
142
 
111
-
112
-
113
- int i;
143
+
114
-
115
- time_besten besten;
116
-
117
-
118
144
 
119
145
  while((i = fread(&besten,sizeof(struct tm),1, fp3)) > 0 ){
120
146
 
@@ -132,11 +158,7 @@
132
158
 
133
159
  }
134
160
 
135
- // 画面が一瞬で消えてしまうのを防止
161
+
136
-
137
- // 一瞬で画面が消えてしまう場合には、
138
-
139
- // 以下の文を入力します。
140
162
 
141
163
  fflush(stdin);
142
164
 
@@ -144,11 +166,13 @@
144
166
 
145
167
 
146
168
 
169
+ fclose(fp);
170
+
171
+ fclose(fp3);
172
+
147
173
  }
148
174
 
149
- fclose(fp);
175
+
150
-
151
- fclose(fp3);
152
176
 
153
177
  }
154
178
 
@@ -160,26 +184,10 @@
160
184
 
161
185
 
162
186
 
163
- /*結果
164
187
 
165
188
 
166
189
 
167
- ...@naka ~/besten
168
-
169
- $ gcc -o bcopy1 bcopy1.c -lpdcursesw
170
-
171
- /mingw/lib/libmingw32.a(main.o):main.c:(.text+0x104): unde
172
-
173
- fined reference to `WinMain@16'
174
-
175
- collect2: ld returned 1 exit status
176
190
 
177
191
 
178
192
 
179
- ....@naka ~/besten
180
-
181
- $
182
-
183
- */
184
-
185
193
  ```