回答編集履歴

2

追記

2017/11/02 14:01

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -1,4 +1,6 @@
1
1
  次のように書き換えることで、私の環境では正常に動作しました。
2
+
3
+ **追記:また、szの値を32に変更していました。simiteiさん、ありがとうございます。**
2
4
 
3
5
  ```C
4
6
 

1

追記

2017/11/02 14:00

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -34,4 +34,60 @@
34
34
 
35
35
  kmmtprgmさんの環境では、sizeof(str)が8であるようです。
36
36
 
37
- 隠れているヌル文字を含め、8文字表示できているようですから。
37
+ 隠れているヌル文字を含め、8文字取得・表示できているようですから。
38
+
39
+
40
+
41
+ ---
42
+
43
+ ついでなので、ちょっと気になった点を追記します。
44
+
45
+ プログラム内のwhile文は、for文に置き換えることで読みやすくなるかと思います。
46
+
47
+ ```C
48
+
49
+ for(int line = 1; fgets(str, sz, fr) != NULL; line++){
50
+
51
+ fprintf(stdout,"%6d ",line);
52
+
53
+ fputs(str, stdout);
54
+
55
+ }
56
+
57
+ ```
58
+
59
+
60
+
61
+ あと、ファイルを複数開く場合、ファイルポインタの解放はもうちょっと複雑になります。
62
+
63
+ ```C
64
+
65
+ FILE* fr = fopen("abc.txt", "r");
66
+
67
+ if(fr == NULL){
68
+
69
+ perror("ReadFileOpen");
70
+
71
+ return 0;
72
+
73
+ }
74
+
75
+
76
+
77
+ FILE* fw = fopen("def.txt", "w");
78
+
79
+ if(fw == NULL){
80
+
81
+ perror("WriteFileOpen");
82
+
83
+ fclose(fr);
84
+
85
+ return 0;
86
+
87
+ }
88
+
89
+ ```
90
+
91
+
92
+
93
+ frのオープンは成功したが、fwのオープンに失敗した場合、frを解放せねばなりません。