Partilhar via


C6273

Aviso 6273 - não inteiro passado como o parâmetro <number> Quando o número inteiro é necessária na chamada para <function>: se um valor de ponteiro está sendo passado, deve ser usado %p

Este aviso indica que a seqüência de caracteres de formato Especifica um número inteiro, por exemplo, um %d, especificação de comprimento ou a precedência para printf , mas um não inteiro como um float, string, ou struct está sendo passado como um parâmetro.Esse defeito provavelmente resultará na saída incorreta.

Exemplo

O código a seguir gera este aviso porque um número inteiro é necessário em vez de um float para sprintffunção:

#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 número 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);
}

O código a seguir usa a função de manipulação de cadeia de caracteres seguras, 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);
}

Este aviso não é aplicável no Windows 9 x e versão 4 do Windows NT porque não há suporte para o %p nessas plataformas.

Consulte também

Referência

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l