Avertissement C6274

Non-caractère passé en tant que paramètre 'number' lorsque le caractère est requis dans l’appel à 'function'

Notes

Cet avertissement indique que la chaîne de format spécifie qu’un caractère est requis (par exemple, une %c ou %C spécification) mais qu’un non-entier tel qu’un float, une chaîne ou un struct est passé. Ce défaut est susceptible d’entraîner une sortie incorrecte.

Nom de l’analyse du code : NON_CHAR_ARGUMENT_TO_FORMAT_FUNCTION

Exemple

Le code suivant génère cet avertissement :

#include <stdio.h>

void f(char str[])
{
   char buff[5];
   sprintf(buff,"%c",str);
}

Pour corriger cet avertissement, utilisez le code suivant :

#include <stdio.h>

void f(char str[])
{
   char buff[5];
   sprintf(buff,"%c",str[0]);
}

Le code suivant utilise la fonction de manipulation de chaîne sécurisée, sprintf_spour corriger cet avertissement :

#include <stdio.h>

void f(char str[])
{
   char buff[5];
   sprintf_s(buff,5,"%c", str[0]);
}

Syntaxe de spécification de format : fonctions printf et wprintf
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
C4477
C4313