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
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