パラメータ付きのユーザー定義関数を使用して最大数を見つける小さなアプリケーションを作成しました。実行すると、このメッセージが表示されます
エラー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/C++ファイルの先頭に次の行を追加します。
#define _CRT_SECURE_NO_WARNINGS