Compartilhar via


C6273

Aviso 6273 - não inteiro passado sistema autônomo parâmetro <number>quando inteiro é exigido na telefonar para <função>: Se o valor do ponteiro forem passado, %p deve ser usado

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 precedência para printf mas um não inteiro sistema autônomo um float, seqüência de caracteres, ou struct está sendo passado sistema autônomo um parâmetro. Esse defeito tem probabilidade de gerar 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 converter para corrigir este 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 seqüência segura, sprintf_s,Para corrigir este 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 Windows NT versão 4 porque não há suporte para o %p nessas plataformas.

Consulte também

Referência

sprintf _sprintf_l swprintf, _swprintf_l, __swprintf_l