C6273

O aviso 6273 - não inteiras passado como o número do parâmetro> <quando o inteiro é exigido na chamada <para>funcionar: se um valor do ponteiro está sendo passado, %p deve ser usado

Esse aviso indicar que a cadeia de formato especificar um inteiro, a especificação por exemplo, %d, o comprimento ou de precedência para um printf mas não inteiro, como floatcadeia de caracteres, ou struct estão sendo passados como um parâmetro.Este defeito pode resultar na saída incorretas.

Exemplo

O código a seguir gerenciar esse aviso como um inteiro é necessário em vez de float à função de sprintf:

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

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

O código a seguir usa um inteiro convertido para corrigir esse aviso:

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

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

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

A função segura de manipulação de cadeia de caracteres dos seguintes usos de código, sprintf_s, para corrigir esse aviso:

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

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

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

Esse aviso não é aplicável a versão 4 do windows 9x e do Windows NT como %p não tem suporte nessas plataformas.

Consulte também

Referência

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l