Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Numero intero passato come parametro 'number' quando è necessario un numero intero nella chiamata a 'function'
Osservazioni:
Questo avviso indica che l'identificatore di stringa di formato in una printf funzione like prevede un tipo integer, ma un valore non intero, ad esempio una floatstringa o struct viene passato. Questo avviso controlla gli identificatori di tipo integer come %de l'identificatore di larghezza/precisione che usano numeri interi come %*.*f. È probabile che questo difetto generi un output errato.
Nome dell'analisi del codice: NON_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION
Esempio
Il codice seguente genera questo avviso perché è necessario un numero intero anziché una float nella sprintf funzione :
#include <stdio.h>
void f_defective()
{
char buff[50];
float f=1.5;
sprintf(buff, "%d",f);
}
Il codice seguente usa un cast intero per correggere questo avviso. In alternativa, potrebbe aver corretto l'avviso modificando l'identificatore di formato in modo che corrisponda al tipo.
#include <stdio.h>
void f_corrected()
{
char buff[50];
float f=1.5;
sprintf(buff,"%d",(int)f);
}
Il codice seguente usa la funzione di manipolazione delle stringhe sicura, sprintf_s, per correggere questo avviso:
#include <stdio.h>
void f_safe()
{
char buff[50];
float f=1.5;
sprintf_s(buff,50,"%d",(int)f);
}
Questo avviso non è applicabile in Windows 9x e Windows NT versione 4 perché %p non è supportato in queste piattaforme.
Vedi anche
Sintassi della specifica del formato: funzioni printf e wprintf
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
C4477