Advertencia C6303
Error de coincidencia de cadenas de formato.
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
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
:
#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.
#include <stdio.h>
void f()
{
wchar_t buff[5] = L"hi";
printf_s("%ls", buff);
}
Sintaxis de especificación de formato: printf
y wprintf
funciones
C4477
C6302