Condividi tramite


C6272

avviso C6272: non float passato come argomento <numero> mentre nella chiamata a <funzione> è richiesto un float

L'avviso indica che nella stringa di formato è specificato che è richiesto un valore float, ad esempio una specifica %f o %g per printf, ma è stato passato un valore diverso da float, quale un integer o una stringa. Con molta probabilità l'errore può causare un output non corretto, ma in alcune circostanze potrebbe provocare un arresto anomalo del sistema.

Esempio

Il codice seguente genera questo avviso:

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

void f()
{
   char buff[5];
   int i=5;

   sprintf(buff,"%s %f","a",i); 
}

Per risolvere il problema, utilizzare la specifica %i invece di %f come riportato nel codice seguente:

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

void f()
{
   char buff[5];
   int i=5;

   sprintf(buff,"%s %i","a",i);  
}

Nel codice riportato di seguito per risolvere il problema viene utilizzata la funzione protetta di modifica delle stringhe sprintf_s:

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

void f()
{
   char buff[5];
   int i=5;

   sprintf_s(buff,5,"%s %i","a",i); // safe version
}

Vedere anche

Riferimenti

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l