回答編集履歴
1
誤字の修正
test
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
Fukushima\n という文字列をfgetsで読み込ませたとき、最初の読み込みでは、Fukushima\0 がバッファに入り、\n は読み込まれません。なぜなら、\nを読み込もうとすると、\
|
1
|
+
Fukushima\n という文字列をfgetsで読み込ませたとき、最初の読み込みでは、Fukushima\0 がバッファに入り、\n は読み込まれません。なぜなら、\nを読み込もうとすると、\0で文字列を終端させることができないからです。これがfgets関数の仕様です。
|
2
2
|
今回の場合では、start[11以上]であれば、バッファは足ります。が、よりきちんと、堅牢なプログラムを書くのであれば、無批判に```start[strlen(start)-1]='¥0';```と書くのではなく、「文字列の長さが1以上か判定し、そうであり、かつ、文字列の最後の文字が改行コードであればそれを削除する。改行コードがなければ長すぎる文字列が入力されているので、エラーとして扱い、改行コードが現れるかEOFになるかエラーになるまで、必要なだけ文字列を空読みする」など、ありうるパターンを細かく想定すべきでしょう。
|