Udostępnij za pośrednictwem


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
}

Zobacz też

Informacje

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l