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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ぺろ
記事: 3
登録日時: 3年前

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

#1

投稿記事 by ぺろ » 3年前

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

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

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

Meta3

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

#2

投稿記事 by Meta3 » 3年前

その通りです

コード:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
または

コード:

#pragma warning(disable:4996)

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

Meta3

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

#3

投稿記事 by Meta3 » 3年前

strcpy,strcpy_sの例で説明しているが scanf,scanf_s と同様です
この様な関数がたくさんあります
https://qiita.com/softnakikaiya/items/3 ... cfc22db548

ぺろ
記事: 3
登録日時: 3年前

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

#4

投稿記事 by ぺろ » 3年前

有益な情報をありがとうございます。参考にさせていただきます。

返信

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