Q1002

Last-modified: Sun, 06 Mar 2016 15:09:02 JST (805d)

カテゴリー

問題

次に掲げるC言語の関数のうち、stdin経由でキーボード入力を受け付ける際に絶対に避けるべきものはどれか。①scanf;②gets;③kbhit;④getchar

正解

正解は②getsです。

解説

  1. 書式指定で "%127s" のように入力バッファサイズを正しく指定すること、返り値を確認して正しくエラー処理すること、この2点を守れば安全です。
  2. getsには入力バッファサイズを指定する方法がありません。バッファオーバーフローが不可避です。
  3. Tight loopにならないようにsleep等で適切にOSにCPUパワーを返せば問題ありません。
  4. 使用が推奨される関数の一つです。

基準日

2015.06.11