Leer en inglés

Compartir a través de


Advertencia C6303

Error de coincidencia de cadenas de formato.

Comentarios

Esta advertencia indica que una cadena de formato especifica una cadena de caracteres estrechos, pero se pasa una cadena de caracteres anchos 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 de análisis de código: WCHAR_CHAR_ARGUMENT_TO_FORMAT_FUNCTION

Ejemplo

El siguiente ejemplo de código genera esta advertencia. buff es una cadena de caracteres anchos, pero la printf_s llamada espera una cadena corta como se indica en %s:

C++
#include <stdio.h>

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

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

C++
#include <stdio.h>

void f()
{
    wchar_t buff[5] = L"hi";
    printf_s("%ls", buff);
}

Consulte también

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