Udostępnij za pośrednictwem


C6273

Ostrzeżenie 6273 - nie jest liczbą całkowitą, przekazane jako parametr <number> gdy liczba całkowita jest wymagane w wywołaniu <function>: Jeśli przekazywany jest wartość wskaźnika, należy użyć %p

To ostrzeżenie wskazuje, że ciąg formatu określa całkowitą, na przykład, %d, długość lub pierwszeństwo specyfikacji dla printf , ale nie jest liczbą całkowitą takich jak float, string, lub struct jest jest przekazywana jako parametr.Tej wady prawdopodobnie może spowodować niepoprawne dane wyjściowe.

Przykład

Poniższy kod generuje to ostrzeżenie, ponieważ liczba całkowita jest wymagane, zamiast float do sprintffunkcji:

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

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

W poniższym kodzie użyto integer oddanych do skorygowania tego ostrzeżenia:

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

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

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

Następujący kod używa funkcji manipulacji bezpieczne string, sprintf_s, aby poprawić to ostrzeżenie:

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

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

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

To ostrzeżenie nie jest stosowane w systemach Windows 9 x i Windows NT w wersji 4 ponieważ %p nie jest obsługiwane na tych platformach.

Zobacz też

Informacje

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l