C6272
Ostrzeżenie C6272: przekazano jako argument wartość, która nie jest liczbą zmiennoprzecinkową <number> kiedy wymagana jest liczba zmiennoprzecinkowa w wywołaniu <function>
To ostrzeżenie wskazuje na to, że ciąg formatu określa, że wymagana jest liczba zmiennoprzecinkowa, na przykład %f lub %g w specyfikacji dla funkcji printf, ale przekazana została wartość, która nie jest liczbą zmiennoprzecinkową, np. liczba całkowita lub ciąg znaków.Defekt ten może skutkować niepoprawnymi danymi wyjściowymi; jednak w niektórych konkretnych okolicznościach może skutkować awarią.
Przykład
Poniższy kod generuje to ostrzeżenie:
#include <stdio.h>
#include <string.h>
void f()
{
char buff[5];
int i=5;
sprintf(buff,"%s %f","a",i);
}
Aby poprawić to ostrzeżenie, użyj specyfikacji %i zamiast %f specyfikacji, jak pokazano w poniższym kodzie:
#include <stdio.h>
#include <string.h>
void f()
{
char buff[5];
int i=5;
sprintf(buff,"%s %i","a",i);
}
Następujący kod używa bezpiecznej funkcji do wykonywania operacji na ciągach sprintf_s, aby poprawić to ostrzeżenie:
#include <stdio.h>
#include <string.h>
void f()
{
char buff[5];
int i=5;
sprintf_s(buff,5,"%s %i","a",i); // safe version
}