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

回答編集履歴

2

追記

2017/11/02 12:10

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,5 +1,4 @@
1
- copy関数内のmaxの値が不定です。
2
- (グローバル変数maxとここのmaxは別物です。)
1
+ copy関数内のmaxの値が不定です。(グローバル変数maxとここのmaxは別物です。)
3
2
  > ```C
4
3
  void copy(FILE *src, FILE *dst)
5
4
  {
@@ -15,7 +14,29 @@
15
14
  break;
16
15
  }
17
16
  }
17
+ > ```
18
+
19
+ 引数maxを追加するのが最もシンプルに思えます。
20
+ グローバル変数を使っても解決出来ますが、あまり良い作法とは言えないでしょう。
21
+
22
+ ついでに言うと、iの値が不定なのもよくないですね。
23
+ 何らかの変数を参照する際には、適切に初期化されているか確認する癖をつけた方が良いです。
24
+
25
+ ---
26
+ 適当に作ってみました。
27
+ ```C
28
+ void copy(FILE *src, FILE *dst, int max) {
29
+ char ch;
30
+ for(int i = 0; i < max; i++) {
31
+ while((ch = fgetc(src)) != '\n') {
32
+ if(ch == EOF) return;
33
+
34
+ fputc(ch, dst);
35
+ }
36
+ fputc('\n', dst);
37
+ }
38
+ }
18
39
  ```
19
40
 
20
- 引数maxを追加するのが最もシンプルに思えます。
21
- グローバを使っても解決出来ます、あまり良い作法とは言えないでしょう。
41
+ Cではデフォト引数が(確か)使えない、10とい数値は呼び出し側で指定してください
42
+ デフォルト引数もオーバーロードも工夫なしに使えないのは不便ですね...

1

追記

2017/11/02 12:10

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,4 +1,5 @@
1
1
  copy関数内のmaxの値が不定です。
2
+ (グローバル変数maxとここのmaxは別物です。)
2
3
  > ```C
3
4
  void copy(FILE *src, FILE *dst)
4
5
  {
@@ -16,4 +17,5 @@
16
17
  }
17
18
  ```
18
19
 
19
- 引数maxを追加するのが最もシンプルに思えます。
20
+ 引数maxを追加するのが最もシンプルに思えます。
21
+ グローバル変数を使っても解決出来ますが、あまり良い作法とは言えないでしょう。