ページ 11

どうして、scanfではなくscanf_sなのか?

Posted: 2020年12月27日(日) 15:25
by ぺろ
【経緯】
今日は条件分岐に入ったのですが、scanfを使う場面がありましたが、いざ使ってみると英語で『その関数安全ではないかもしれません、代わりにscanf_sを使ってください』みたいなメッセージが流れます。

【質問】
それで、scanf_sを使うとエラーなく実行可能でした。解決したので、普通にscanf_sを使えばいい話ですが、どうしてこちらを使わないといけないのかが気になり質問することにしました。

【どうでもいい質問②】
scanf_sの『s』は英語の【safe】からくるものですか?

Re: どうして、scanfではなくscanf_sなのか?

Posted: 2020年12月27日(日) 16:32
by Meta3
その通りです

コード:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
または

コード:

#pragma warning(disable:4996)

#include <stdio.h>
で警告を抑制できます。
https://programming-place.net/ppp/conte ... 996_pragma

Re: どうして、scanfではなくscanf_sなのか?

Posted: 2020年12月27日(日) 20:09
by Meta3
strcpy,strcpy_sの例で説明しているが scanf,scanf_s と同様です
この様な関数がたくさんあります
https://qiita.com/softnakikaiya/items/3 ... cfc22db548

Re: どうして、scanfではなくscanf_sなのか?

Posted: 2020年12月27日(日) 20:34
by ぺろ
有益な情報をありがとうございます。参考にさせていただきます。