• 締切済み

scanf関数について

質問があります。 最近C言語を勉強し始めたのですが、scanf関数を使うと以下のような警告が出ます。 「arning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(306) : 'scanf' の宣言を確認してください。」 使用しているのは Visual C++ 2008 Express Editionです。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

scanf は「ちゃんと使え」ば問題ないんだけど, 「何も考えずに使う」と #1 で指摘されているようにバッファオーバーフローの原因になります. なので, 「小さな親切」でこんなメッセージを出しています. Visual C++ の独自仕様なので, 「一般的な参考書に載っていない」としてもしょうがないかと.

aal73150
質問者

お礼

とりあえず問題ないみたいなので慣れるまでこのままでいこうかと思います。 早々の回答ありがとうございました。

  • MoguraSE
  • ベストアンサー率64% (81/126)
回答No.1

こんにちは。 scanf()やstrcpy()などは、バッファオーバーフローを起こすとセキュリティホールとなりえるので、危険ですよ~という警告です。 同様の機能を持つセキュアな関数が用意されているので、そちらを使われたほうがよいと思いますが、一般的な参考書に載ってないので勉強には不向きですね… 下記の方法で警告を停止することができます。 http://wind-master.dip.jp/soft-info/item/61

参考URL:
http://wind-master.dip.jp/soft-info/item/61
aal73150
質問者

お礼

なるほど。なかなか難しいですね。 とりあえず実行はできるのでしばらくは今のままやってみようと思います。 早々の返答ありがとうございました。

関連するQ&A

専門家に質問してみよう