回答編集履歴

2

記述の追加

2019/09/06 05:31

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -55,3 +55,25 @@
55
55
  }
56
56
 
57
57
  ```
58
+
59
+ **追記**
60
+
61
+ 上の 2つのプログラムは等価ではありません。
62
+
63
+
64
+
65
+ 入力データが 3行で3行目の最後に '\n' が
66
+
67
+ ない場合、例えば、"abc\n" "def\n" "ghi" だったとします。
68
+
69
+ fgets が最後の "ghi" を読み込んだとき、
70
+
71
+ fgets は、NULL ではなく、buf を返します。
72
+
73
+ feof(fp) は 真(0以外の値) になります。
74
+
75
+
76
+
77
+ 最初のプログラムでは、"ghi" を表示します。
78
+
79
+ 2つ目のプログラムでは、"ghi" を表示しません。

1

記述の間違いを訂正

2019/09/06 05:31

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -12,11 +12,11 @@
12
12
 
13
13
  feof(fp) は直前に実行した入力関数がファイルの最後を検出し
14
14
 
15
- 入力処理が失敗したときに 0 になります。
15
+ 入力処理が失敗したときに 0 以外の値になります。
16
16
 
17
17
  その実行例では fp から 13行のデータを読み込んでいるのですが、
18
18
 
19
- 13行目の読み込みは成功するので、feof(fp) は 0 ではありません
19
+ 13行目の読み込みは成功するので、feof(fp) は 0 で
20
20
 
21
21
  そして、14行目を fgets で読みに行きます。
22
22