Advertencia C6302

Error de coincidencia de cadenas de formato.

Comentarios

Esta advertencia indica que una cadena de formato especifica una cadena de caracteres anchos, pero se pasa una cadena de caracteres estrechos en su lugar. Una causa de la advertencia es porque el significado de %s y %S voltea cuando se usa con printf o wprintf. Este defecto puede provocar bloqueos, además de una salida potencialmente incorrecta.

Nombre del análisis de código: CHAR_WCHAR_ARGUMENT_TO_FORMAT_FUNCTION

Ejemplo

El código siguiente genera esta advertencia. buff es una cadena de caracteres estrechos, pero wprintf_s es la variante de cadena ancha de printf_s y, por tanto, espera %s ser ancha:

void f()
{
    char buff[5] = "hi";
    wprintf_s(L"%s", buff);
}

El código de ejemplo siguiente corrige este problema mediante %hs para especificar una cadena de caracteres de un solo byte. Como alternativa, podría haber cambiado a %S, que es una cadena estrecha cuando se usa con wprintf funciones similares. Consulte Sintaxis de especificación de formato: printf y wprintf funciones para obtener más opciones.

void f()
{
    char buff[5] = "hi";
    wprintf_s(L"%hs", buff);
}

Consulte también

Sintaxis de especificación de formato: printf y wprintf funciones
C4477
C6303