C6273

Avertissement 6273 : Valeur non entière passée comme paramètre <numéro> lorsqu'une valeur entière est requise dans l'appel à <fonction> : si une valeur de pointeur est passée, utilisez %p

Cet avertissement indique que la chaîne de format spécifie un entier, par exemple, %d, une longueur ou une spécification de priorité pour printf, mais une valeur non entière, par exemple float, une chaîne ou struct, est passée comme paramètre. Ce défaut risque de générer une sortie incorrecte.

Exemple

Le code suivant génère cet avertissement car un entier est requis au lieu de float dans la fonction sprintf :

#include <stdio.h>
#include <string.h>

void f_defective()
{
  char buff[50];
  float f=1.5;
  
  sprintf(buff, "%d",f);
}

Le code suivant utilise un cast d'entier pour corriger cet avertissement :

#include <stdio.h>
#include <string.h>

void f_corrected()
{
  char buff[50];
  float f=1.5;

  sprintf(buff,"%d",(int)f);
}

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

#include <stdio.h>
#include <string.h>

void f_safe()
{
  char buff[50];
  float f=1.5;

  sprintf_s(buff,50,"%d",(int)f);
}

Cet avertissement n'est pas applicable sur Windows 9x et Windows NT version 4 car %p n'est pas pris en charge sur ces plateformes.

Voir aussi

Référence

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l