Condividi tramite


C6273

Avviso 6273: non integer passato come parametro <numero> mentre nella chiamata a <funzione> è richiesto un integer: se viene passato il valore di un puntatore, utilizzare %p

L'avviso indica che la stringa di formato specifica un integer, ad esempio un %d, una specifica di lunghezza o precedenza per printf. Tuttavia come parametro viene passato un valore non integer come float, una stringa o struct. È probabile che l'errore provochi un output non corretto.

Esempio

Il codice seguente genera l'avviso in quanto è necessario un Integer anziché una funzione float a sprintf :

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

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

Per risolvere il problema, nel codice seguente viene utilizzato un cast di integer:

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

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

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

Per risolvere il problema, nel codice seguente viene utilizzata la funzione protetta di modifica delle stringhe, sprintf_s:

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

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

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

L'avviso non è applicabile a Windows 9x e Windows NT versione 4 in quanto %p non è supportato su queste piattaforme.

Vedere anche

Riferimenti

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l