Avertissement C6067
Le paramètre 'number' dans l’appel à 'function' doit être l’adresse de la chaîne
Notes
Cet avertissement indique une incompatibilité entre le spécificateur de format et le paramètre de fonction. Même si l’avertissement suggère d’utiliser l’adresse de la chaîne, vous devez case activée le type de paramètre attendu par une fonction avant de corriger le problème. Par exemple, une %s
spécification pour printf
exiger un argument de chaîne, mais une %s
spécification scanf
nécessite une adresse de la chaîne.
Ce défaut est susceptible d’entraîner un blocage ou une corruption d’une forme quelconque.
Nom de l’analyse du code : NON_STRING_ARGUMENT_TO_FORMAT_FUNCTION
Exemple
Le code suivant génère cet avertissement, car un entier est passé au lieu d’une chaîne :
#include <stdio.h>
void f_defective()
{
char *str = "Hello, World!";
printf("String:\n %s", 1);
// code ...
}
Pour corriger l’avertissement, transmettez une chaîne en tant que paramètre comme printf
indiqué dans le code suivant :
#include <stdio.h>
void f_corrected()
{
char *str = "Hello, World!";
printf("String:\n %s", str);
// code ...
}
Le code suivant génère cet avertissement, car un niveau incorrect d’indirection est spécifié lors du passage du paramètre, de la mémoire tampon, à scanf
:
#include <stdio.h>
void h_defective()
{
int retval;
char* buffer = new char(20);
if (buffer)
{
retval = scanf("%s", &buffer); // warning C6067
// code...
delete buffer;
}
}
Pour corriger les avertissements ci-dessus, transmettez le paramètre approprié, comme indiqué dans le code suivant :
#include <stdio.h>
void h_corrected()
{
int retval;
char* buffer = new char(20);
if (buffer)
{
retval = scanf("%s", buffer);
// code...
delete buffer;
}
}
Le code suivant utilise des fonctions de manipulation de chaîne sécurisée pour corriger cet avertissement :
#include <stdio.h>
void f_safe()
{
char buff[20];
int retVal;
sprintf_s(buff, 20, "%s %s", "Hello", "World!");
printf_s("String:\n %s %s", "Hello", "World!");
retVal = scanf_s("%s", buff, 20);
}
Voir aussi
Syntaxe de spécification de format : fonctions printf et wprintf
sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l
printf, _printf_l, wprintf, _wprintf_l
scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l
C4313
C4477
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour