回答編集履歴

1

補足を追加

2020/10/14 17:00

投稿

Daregada
Daregada

スコア11990

test CHANGED
@@ -3,6 +3,8 @@
3
3
  - `fgets`の第2引数に、格納先の配列の**要素数+1を指定してはいけない**。配列の全要素に文字データが格納される状況で、自動的に付加される**ヌル文字`\0`が配列の範囲を超えて書き込まれる**。`sizeof`を利用して、配列の要素数を指定すべきだ。
4
4
 
5
5
  - ファイルから読み込んだ文字列から単語を切り出す際、**単語の長さが0であっても総単語数のカウンターを1増やしている**。改行を含む文字列で総単語数が1増えてしまうのはこれが原因だ。カウンターの処理の前に、単語の長さを調べれば対処できる。
6
+
7
+ - `fopen`に失敗したら、ファイル処理を続けてはいけない。
6
8
 
7
9
  - 配列名をそのまま使えばいい状況で、**意味もなくポインター変数を使うのはやめよう**。`p_word`, `p_key`, `buf`は、今回のコードではすべて不要だ。
8
10