回答編集履歴

2

追記

2017/11/02 12:10

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -1,6 +1,4 @@
1
- copy関数内のmaxの値が不定です。
2
-
3
- (グローバル変数maxとここのmaxは別物です。)
1
+ copy関数内のmaxの値が不定です。(グローバル変数maxとここのmaxは別物です。)
4
2
 
5
3
  > ```C
6
4
 
@@ -32,10 +30,54 @@
32
30
 
33
31
  }
34
32
 
35
- ```
33
+ > ```
36
34
 
37
35
 
38
36
 
39
37
  引数maxを追加するのが最もシンプルに思えます。
40
38
 
41
39
  グローバル変数を使っても解決出来ますが、あまり良い作法とは言えないでしょう。
40
+
41
+
42
+
43
+ ついでに言うと、iの値が不定なのもよくないですね。
44
+
45
+ 何らかの変数を参照する際には、適切に初期化されているか確認する癖をつけた方が良いです。
46
+
47
+
48
+
49
+ ---
50
+
51
+ 適当に作ってみました。
52
+
53
+ ```C
54
+
55
+ void copy(FILE *src, FILE *dst, int max) {
56
+
57
+ char ch;
58
+
59
+ for(int i = 0; i < max; i++) {
60
+
61
+ while((ch = fgetc(src)) != '\n') {
62
+
63
+ if(ch == EOF) return;
64
+
65
+
66
+
67
+ fputc(ch, dst);
68
+
69
+ }
70
+
71
+ fputc('\n', dst);
72
+
73
+ }
74
+
75
+ }
76
+
77
+ ```
78
+
79
+
80
+
81
+ Cではデフォルト引数が(確か)使えないので、10という数値は呼び出し側で指定してください。
82
+
83
+ デフォルト引数もオーバーロードも工夫なしに使えないのは不便ですね...

1

追記

2017/11/02 12:10

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -1,4 +1,6 @@
1
1
  copy関数内のmaxの値が不定です。
2
+
3
+ (グローバル変数maxとここのmaxは別物です。)
2
4
 
3
5
  > ```C
4
6
 
@@ -35,3 +37,5 @@
35
37
 
36
38
 
37
39
  引数maxを追加するのが最もシンプルに思えます。
40
+
41
+ グローバル変数を使っても解決出来ますが、あまり良い作法とは言えないでしょう。