• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:getsを使ったところ)

gccコンパイラでgets関数を使うと警告が出る理由はなぜでしょうか?

このQ&Aのポイント
  • gccコンパイラでgets関数を使用すると、警告が表示されます。
  • gets関数はバッファオーバーフローの脆弱性を持っており、セキュリティ上のリスクがあるためです。
  • 代わりに、fgets関数を使用することを推奨します。fgets関数はバッファサイズを指定でき、オーバーフローを防げます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

質問にあるプログラムは、標準入力から長さがBUFSIZを超える改行を含まない文字列を与えられたときに正しく動作しません。 そして、gets()を使っている限りそれを防ぐことが出来ません。 なので「the `gets' function is dangerous and should not be used.」(gets関数は危険であり使うべきでない)という警告が表示されるようになっているのでしょう。

参考URL:
http://ja.wikipedia.org/wiki/Gets
gachinco
質問者

お礼

ありがとうございました。 なるほど、だからgetsを使うと改行を省いて 文字列に格納されるんですね。 よく分かりました

その他の回答 (1)

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.2

>という警告文が出てくるのですがどうしてでしょう? 読んだままです。 さらに man gets を読みましょう。

関連するQ&A