erreur C4996: 'scanf': Cette fonction ou une variable peut être dangereux dans la programmation en c
J'ai créé une petite application qui permet de trouver le nombre maximal de numéros en utilisant la fonction définie par l'utilisateur avec des paramètres. Quand je le lance, il affiche ce message
Erreur 1 erreur C4996: 'scanf': Cette fonction ou une variable peut être dangereux.
Pensez à utiliser scanf_s à la place. Pour désactiver l'autodérision, de l'utilisation
_CRT_SECURE_NO_WARNINGS. Consultez 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);
}
Eh bien, c'est un avertissement traitée comme une erreur. Soit faire comme l'a suggéré, et les remplacer
Voir Pourquoi Visual Studio 2013 erreur sur C4996?
juste un avertissement du compilateur. scanf_s prévient d'un éventuel débordement de la mémoire tampon. voir code.wikia.com/wiki/Scanf_s
Je ne suis pas sûr de ce que la question est. Soit de remplacer ou de les désactiver: #define _CRT_SECURE_NO_WARNINGS
Double Possible de Pourquoi Visual Studio 2013 erreur sur C4996?
scanf
avec scanf_s
, ou de le désactiver comme c'est vous dire..Voir Pourquoi Visual Studio 2013 erreur sur C4996?
juste un avertissement du compilateur. scanf_s prévient d'un éventuel débordement de la mémoire tampon. voir code.wikia.com/wiki/Scanf_s
Je ne suis pas sûr de ce que la question est. Soit de remplacer ou de les désactiver: #define _CRT_SECURE_NO_WARNINGS
Double Possible de Pourquoi Visual Studio 2013 erreur sur C4996?
OriginalL'auteur Chheang Phearum | 2015-06-01
Vous devez vous connecter pour publier un commentaire.
Ça sonne comme un avertissement du compilateur.
Utilisation de
scanf_s
prévient d'un éventuel débordement de la mémoire tampon.Voir: http://code.wikia.com/wiki/Scanf_s
Bonne explication pourquoi
scanf
peut être dangereux: Les inconvénients de scanfDonc, comme l'a suggéré, vous pouvez essayer de remplacer
scanf
avecscanf_s
ou désactiver l'avertissement du compilateur.Pour désactiver le message d'avertissement du compilateur, ajouter tout en haut de votre programme de la déclaration suivante:
#define _CRT_SECURE_NO_WARNINGS
.Le wikia lien dit
scanf_s
" est le même quescanf
, sauf qu'il est en sécurité." Est-il une raison pourquoi une mise en œuvre qui peuvent soutenirscanf_s
devrait avoirscanf
pas de la chaîne à la même fonction?OriginalL'auteur user3742467
Une autre façon de supprimer l'erreur: Ajoutez cette ligne en haut en C/C++ fichier:
#include
lignes". Si vous vous mettez en dessous#include<stdio.h>
, par exemple, vous aurez toujours l'avertissement, parce que lorsque vous le désactivez, il est déjà trop tard.a mentionné un point très important. Chaque fois que nous créons un défaut du RPC projet, puis il crée
<projectName>.cpp
fichier contenantmain
méthode. Tous les fichiers d'en-tête, il se réfère à une centralisation de fichier d'en-tête nomméestdafx.h
qui contient toutes les instructions include. Alors, quand j'ai écrit#define _CRT_SECURE_NO_WARNINGS
en haut de<projectName>.cpp
fichier avant de tout comprendre des énoncés, alors il ne fait pas de différence. Mais quand je l'ai ajouté en haut destdafx.h
fichier puis, finalement, l'erreur a disparu.OriginalL'auteur JerryGoyal