回答編集履歴

1

バグの修正

2016/10/05 01:15

投稿

majiponi
majiponi

スコア1720

test CHANGED
@@ -14,19 +14,13 @@
14
14
 
15
15
 
16
16
 
17
- 条件式を
18
-
19
- ```C
20
-
21
- while(fscanf(fp,"%s",str)>=0)
17
+ 本問では、条件式を```while(fscanf(fp,"%s",str)>0)```とすれば、正しく動作します。
22
-
23
- ```
24
-
25
- とすれば、正しく動作します。
26
18
 
27
19
 
28
20
 
21
+
22
+
29
- 蛇足:本問とは直接関係がないので、余裕があれば読んでください。
23
+ 以下蛇足:本問とは直接関係がないので、余裕があれば読んでください。
30
24
 
31
25
 
32
26
 
@@ -34,12 +28,4 @@
34
28
 
35
29
  1つ目は、書き込み用ファイルが開けない場合の処理です。読み込み用ファイルが開いたままに、なりませんか?
36
30
 
37
- 2つ目は、長い単語入力があった場合です。もし101桁の数字が入力されたら、バッファオーバーフローが発生します。これは時に深刻なセキュリティホールになります。
31
+ 2つ目は、長い単語入力があった場合です。もし101桁の数字が入力されたら、バッファオーバーフローが発生します。バッファオーバーフロー時に深刻なセキュリティホールになります。修正方法ですが、```while(fscanf(fp,"%99s",str)>0)```と、fscanf関数の引数で桁数を指定すれば、この問題は回避されます。
38
-
39
- ```C
40
-
41
- while(fscanf(fp,"%99s",str)>=0)
42
-
43
- ```
44
-
45
- と、fscanf関数の引数で桁数を指定すれば、この問題は回避されます。