web-dev-qa-db-fra.com

erreur C4996: 'scanf': cette fonction ou variable peut être dangereuse dans la programmation c

J'ai créé une petite application pour trouver le nombre maximum en utilisant une fonction définie par l'utilisateur avec un paramètre. Lorsque je l'exécute, il affiche ce message

Erreur 1 erreur C4996: "scanf": cette fonction ou variable peut être dangereuse. Envisagez plutôt d'utiliser scanf_s. Pour désactiver la dépréciation, utilisez _CRT_SECURE_NO_WARNINGS. Voir l'aide en ligne pour plus de détails.

Que dois-je faire pour résoudre ce problème?

C'est mon code

#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);
}
13
Chheang Phearum

Il semble que ce soit juste un avertissement du compilateur.

L'utilisation de scanf_s empêche un éventuel débordement de tampon.
Voir: http://code.wikia.com/wiki/Scanf_s

Bonne explication des raisons pour lesquelles scanf peut être dangereux: Inconvénients de scanf

Ainsi, comme suggéré, vous pouvez essayer de remplacer scanf par scanf_s ou désactivez l'avertissement du compilateur.

12
user3742467

Une autre façon de supprimer l'erreur: Ajoutez cette ligne en haut dans le fichier C/C++:

#define _CRT_SECURE_NO_WARNINGS
8
JerryGoyal