sscanfとsscanf_s

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
zxzy

sscanfとsscanf_s

#1

投稿記事 by zxzy » 14年前

VC++2010を使っているとsscanfなどを使うと_sを最後につけたものを
使えと警告が出ます。
セキュリティ面?でも_sがついているほうがいいらしいのでVC++では
_s付きを普段使っています。

今回

コード:

sscanf_s(str,"%d%c %d",&i,&c,&j);
という部分でエラーが出ました。
コンパイルは通るのですが実行時に強制終了し
ウィンドウズのエラーを送信するとかのダイアログが出てきます。
デバッグ有りで実行してみるとハンドルされていない例外で
アクセス違反と出ます。
使い方は間違っていないと思うのに何度やってもエラーが出るため

コード:

sscanf(str,"%d%c %d",&i,&c,&j);
_sをはずしたsscanfにしてみました。
するとエラーが出ず正常に動作します。

_s付きだとエラーになる原因って何なのでしょうか?

jay
記事: 314
登録日時: 15年前
住所: 大阪市
連絡を取る:

Re: sscanfとsscanf_s

#2

投稿記事 by jay » 14年前

sscanf_sとsscanfでは引数が違うようですね
これ以外にもセキュリティ強化されている差分的な関数は引数が変わっていたりするので注意してくださいね

対処法などはこちらに参考にしてください
http://soundengine.jp/services/tips/?date=2007-02-05
♪僕たちは まだ森の中 抜け出そう 陽のあたる場所へ

zxzy

Re: sscanfとsscanf_s

#3

投稿記事 by zxzy » 14年前

VC++で引数書いているときに表示されるものは

int sscanf(const char *_Src,const char *_Format,...)
int sscanf_s(const char *_Src,const char *_Format,...)

で同じだったので変わりないと思っていたのですが
ここでは見れない部分が変わっていたのですね。

ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る