22

パラメータ付きのユーザー定義関数を使用して最大数を見つける小さなアプリケーションを作成しました。実行すると、このメッセージが表示されます

エラー 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);
}
4

6 に答える 6

17

単なるコンパイラの警告のようです。

を使用するとscanf_s、バッファ オーバーフローの可能性を回避できます。
参照: http://code.wikia.com/wiki/Scanf_s

scanfなぜ危険なのかについての良い説明: scanf の欠点

提案されているように、コンパイラの警告を置き換えるか無効にするscanfことができます。scanf_s

于 2015-06-01T15:49:14.203 に答える