Advertencia C6064
Falta el argumento entero en 'function-name' correspondiente al especificador de conversión 'number'
Esta advertencia indica que el código no proporciona suficientes argumentos para que coincidan con una cadena de formato y uno de los argumentos que faltan es un entero.
Comentarios
Este defecto es probable que cause una salida incorrecta y, en casos más peligrosos, puede provocar desbordamiento de pila.
Nombre del análisis de código: MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION
Ejemplo
El código siguiente genera esta advertencia porque usa un número incorrecto de argumentos en la llamada a sprintf_s
y el argumento que falta es un entero. Si se usó la función sprintf
no segura en lugar de la variante sprintf_s
más segura, este código probablemente provocaría un desbordamiento de pila en lugar de solo una salida inesperada:
void f()
{
char buff[8];
const char *string="Hello";
sprintf_s(buff, sizeof(buff), "%s %d", string); // Attempts to print "Hello "
// followed by a number up to eleven characters long, depending on the garbage
// found on the stack. Any number other than a single non-negative digit can't
// fit in the 8 char buffer and leave room for the trailing null. If sprintf
// had been used instead, it would overflow.
}
Para corregir esta advertencia, especifique los argumentos que faltan o ajuste la cadena de formato. En este ejemplo, agregamos el valor entero que falta.
void f()
{
char buff[8];
const char *string = "Hello";
sprintf_s(buff, sizeof(buff), "%s %d", string, strlen(string));
}
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de