|
ども。
まず、最低限、入力時にバッファあふれを検出できなければなりません。
したがって、scanf()系の%sや、gets()は使えません。fgetc()等で1文字ずつ
チェックしながら読むか、fgets()で読んだ後にstrlen()で読めた長さを
チェックしてください(fgets()は改行文字も取り込むので注意)。また、
非標準になりますが、getline()が使えれば、それを使うのもよいかと
(この関数は何文字読めたかを返します)。
どの方法を使うにしても、そもそも読めたかどうかを(返り値をみて)
調べるのを忘れずに。それと、もしバッファあふれを検出し、さらに、
それ以降の処理で同じストリームからの入力があるならば、何らかの
方法(空読みするとか、fflush(input_fp)等の処理系依存な方法で)で
読まれなかった分をクリアする必要があります。
メッセージ出力は、fprintf()やfputs()等で、stderrやその他のお好きな
ところへお好みのものをどうぞ。。
では。
|