Compartir a través de


C6273

Actualización: noviembre 2007

C6273

Advertencia 6273: Valor no entero pasado como parámetro <número> cuando el entero es necesario para llamar a <función>: si se está pasando un valor de puntero, deberá utilizar %p

Esta advertencia indica que la cadena de formato especifica un entero, por ejemplo, una especificación %d, de longitud o de prioridad para printf, pero se pasa como parámetro un tipo no entero, como float, una cadena o struct. Es probable que este defecto produzca resultados incorrectos.

Ejemplo

El código siguiente genera esta advertencia porque se requiere un entero en lugar de float para una función sprintf:

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

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

El código siguiente utiliza la conversión de enteros para corregir esta advertencia:

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

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

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

El código siguiente utiliza la función de manipulación de cadenas de caracteres segura, sprintf_s, para corregir esta advertencia:

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

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

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

Esta advertencia no es aplicable en Windows 9x y Windows NT versión 4 porque %p no se admite en estas plataformas.

Vea también

Referencia

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l