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

質問編集履歴

2

エラー内容の変更

2016/01/06 05:15

投稿

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

1

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

2016/01/06 05:15

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,21 @@
1
+ 。。。@naka ~/besten
2
+ $ gcc -o bcopy1 bcopy1.c -lpdcursesw
3
+ 。。。@naka ~/besten
4
+ $ bcopy1
5
+ パラメータが不正です。
6
+ bcopy コピー元ファイル名 コピー先ファイル名
7
+
8
+ 。。。@naka ~/besten
9
+ $ bcopy1 dtfile dtfile3
10
+ ファイルdtfileがオープンできません。
11
+
12
+ 。。。@naka ~/besten
13
+ $
14
+
15
+
1
16
  データ"LACKNUM.DAT"をデータ"LACKNUM3.DAT"にコピー
2
- し、表示するプログラムですが、実行するとエラーがでてうまくいきません。どの当たりが悪いのかおしえてください
17
+ し、表示するプログラムですが、実行するとコンパイルはとおります。しかし上のようなエラーがでてうまくいきません。どの当たりが悪いのかおしえてください
18
+
3
19
  コード
4
20
 
5
21
  /* bcopy … ファイルのコピー */
@@ -19,7 +35,7 @@
19
35
  #define BSIZE 44 // この大きさ(44byte)に分割してコピー
20
36
 
21
37
  char dtfile[] = "LACKNUM.DAT"; // ファイル名
22
- char dtfil] = "LACKNUM3.DAT"; // 4, LACKNUM.DATに保存されているデータを記録するのに
38
+ char dtfile3[] = "LACKNUM3.DAT"; // 4, LACKNUM.DATに保存されているデータを記録するのに
23
39
  // 十分な数の配列"LACKNUM3.DAT" を確保して下さい。
24
40
  typedef struct {
25
41
  struct tm local;
@@ -28,35 +44,32 @@
28
44
 
29
45
  //void disp(char* , int );
30
46
 
31
- int main(void)
47
+ int main(int argc,char* argv[])
32
48
  {
33
- int n,num;
49
+ int i,n,num;
34
50
  FILE *fp, *fp3; // *fpと *fp3はファイルポインタ
35
51
  double best3;
36
52
  time_besten besten;
37
53
  unsigned char buf[BSIZE];
38
54
 
39
- if ((fp = fopen(dtfile, "rb")) == NULL) {
55
+ if (argc != 3) {
40
- fprintf(stderr, "ファイル%sがオプンきません。\n");
56
+ fprintf(stderr, "パラメタが不正。\n");
41
57
  fprintf(stderr, "bcopy コピー元ファイル名 コピー先ファイル名\n");
42
58
  } else {
43
- if ((fp = fopen(dtfile, "rb")) == NULL) {
59
+ if ((fp = fopen(*++argv, "rb")) == NULL) {
44
60
  /* *++argv=const char *filenameも ,"rb"=const char *modeもポインタ */
45
- fprintf(stderr, "ファイル%sがオープンできません。\n", dtfile);
61
+ fprintf(stderr, "ファイル%sがオープンできません。\n", *argv);
46
62
  return (1);
47
- } else if ((fp3 = fopen(dtfile3, "wb")) == NULL) {
63
+ } else if ((fp3 =fopen( *++argv, "wb")) == NULL) {
48
- fprintf(stderr, "ファイル%sがオープンできません。\n", dtfile3);
64
+ fprintf(stderr, "ファイル%sがオープンできません。\n", *argv);
49
65
  fclose(fp);
50
66
  return (1);
51
67
  } else {
52
- while ((n = fread(buf, sizeof(struct tm), 1, fp)) > 0){
68
+ while ( (n = fread(buf, BSIZE, 1, fp)) > 0){
53
69
  /* ファイルポインタfpからsizeof(struct tm) バイトのデータを
54
70
  1 個読み込み、読み込みデータ格納先のポインタbufに格納する */
55
- fwrite(buf,sizeof(struct tm), 1, fp3);
71
+ fwrite(buf,n, 1, fp3);
56
-
57
- int i;
72
+
58
- time_besten besten;
59
-
60
73
  while((i = fread(&besten,sizeof(struct tm),1, fp3)) > 0 ){
61
74
 
62
75
  printf("%d年 %d月 %d日 %d時 %d分 %d秒\n",
@@ -65,29 +78,20 @@
65
78
  fread(&best3,sizeof(double),1, fp3);
66
79
  printf("得点(所要時間)は%.1f秒\n\n",besten.best3);
67
80
  }
68
- // 画面が一瞬で消えてしまうのを防止
81
+
69
- // 一瞬で画面が消えてしまう場合には、
70
- // 以下の文を入力します。
71
82
  fflush(stdin);
72
83
  getchar();
73
84
 
85
+ fclose(fp);
86
+ fclose(fp3);
74
87
  }
75
- fclose(fp);
88
+
76
- fclose(fp3);
77
89
  }
78
90
  }
79
91
  return (0);
80
92
  }
81
93
 
82
- /*結果
83
94
 
84
- ...@naka ~/besten
85
- $ gcc -o bcopy1 bcopy1.c -lpdcursesw
86
- /mingw/lib/libmingw32.a(main.o):main.c:(.text+0x104): unde
87
- fined reference to `WinMain@16'
88
- collect2: ld returned 1 exit status
89
95
 
90
- ....@naka ~/besten
96
+
91
- $
92
- */
93
97
  ```