[解決済み] エラー C4996: 'scanf' です。この関数または変数は、C言語プログラミングでは安全でない可能性があります。
2022-02-11 16:23:11
質問
ユーザー定義関数とパラメータを使用して最大数を求める小さなアプリケーションを作成しました。 それを実行すると、次のようなメッセージが表示されます。
<ブロッククオートエラー1 エラーC4996: 'scanf': この関数または変数は安全でない可能性があります。 代わりにscanf_sを使用することを検討してください。非推奨を無効にするには、以下を使用する。 _crt_secure_no_warnings. 詳細については、オンラインヘルプを参照してください。
どうすれば解決できますか?
これは私のコードです
#include<stdio.h>
void findtwonumber(void);
void findthreenumber(void);
int main() {
int n;
printf("Fine Maximum of two number\n");
printf("Fine Maximum of three number\n");
printf("Choose one:");
scanf("%d", &n);
if (n == 1)
{
findtwonumber();
}
else if (n == 2)
{
findthreenumber();
}
return 0;
}
void findtwonumber(void)
{
int a, b, max;
printf("Enter a:");
scanf("%d", &a);
printf("Enter b:");
scanf("%d", &b);
if (a>b)
max = a;
else
max = b;
printf("The max is=%d", max);
}
void findthreenumber(void)
{
int a, b, c, max;
printf("Enter a:");
scanf("%d", &a);
printf("Enter b:");
scanf("%d", &b);
printf("Enter c:");
scanf("%d", &c);
if (a>b)
max = a;
else if (b>c)
max = b;
else if (c>a)
max = c;
printf("The max is=%d", max);
}
解決方法は?
単なるコンパイラの警告のようですが。
の使用法
scanf_s
バッファオーバーフローの可能性を防ぐことができます。
ご覧ください。
http://code.wikia.com/wiki/Scanf_s
なぜそうなるのか、その理由がよくわかる
scanf
は危険な場合があります。
scanfのデメリット
そこで、提案されたように
scanf
を
scanf_s
またはコンパイラの警告を無効にしてください。
関連
-
[解決済み】C言語で「関数の型が競合しています」と表示される、なぜ?
-
[解決済み】"Expected expression before ' { ' token"(トークンの前に期待される式)。
-
[解決済み】cudamalloc()の使用。) なぜダブルポインタなのか?
-
[解決済み】MB/sとMiB/sを計算する方法は?
-
[解決済み】 「配列のイニシャライザーはイニシャライザーリストまたは文字列リテラルでなければなりません」と表示されるのですが?
-
[解決済み】C言語で多重定義を防ぐには?
-
[解決済み】LinuxのI_PUSHに相当するもの
-
[解決済み】「複数の定義」「最初に定義されたのはここです」エラーについて
-
[解決済み】MPI通信でMPI_Bcastを使用する場合
-
[解決済み】makefile:4。*** missing separator. 停止する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C言語で「関数の型が競合しています」と表示される、なぜ?
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み] Connect: ソケット以外でのソケット操作
-
[解決済み】デバッガgdbの使用時に不明な終了シグナルが発生する。
-
[解決済み】スレッド1:EXC_BAD_ACCESS(コード=1、アドレス=0x0)標準Cメモリ問題
-
[解決済み] テスト
-
[解決済み】エラー。非スカラー型への変換を要求された
-
[解決済み】int型配列へのポインタのスカラ・イニシャライザの過剰要素
-
[解決済み】宣言指定子で2つ以上のデータ型がある場合のエラー【非公開
-
[解決済み] CRT_SECURE_NO_WARNINGSの使用方法