Avviso C6302
Mancata corrispondenza della stringa di formato.
Osservazioni:
Questo avviso indica che una stringa di formato specifica una stringa di caratteri wide, ma viene passata una stringa di caratteri stretta. Una causa dell'avviso è dovuta al significato di %s
e %S
capovolgimento quando viene usato con printf
o wprintf
. Questo difetto può causare arresti anomali, oltre a un output potenzialmente errato.
Nome dell'analisi del codice: CHAR_WCHAR_ARGUMENT_TO_FORMAT_FUNCTION
Esempio
Il codice seguente genera questo avviso. buff
è una stringa di caratteri stretta, ma wprintf_s
è la variante di stringa wide di printf_s
e quindi prevede %s
un'ampiezza:
void f()
{
char buff[5] = "hi";
wprintf_s(L"%s", buff);
}
Il codice di esempio seguente corregge questo problema usando %hs
per specificare una stringa di caratteri a byte singolo. In alternativa, potrebbe essere passato a %S
, che è una stringa stretta se usata con wprintf
funzioni simili. Per altre opzioni, vedere Sintassi delle specifiche del formato: printf
e wprintf
funzioni .
void f()
{
char buff[5] = "hi";
wprintf_s(L"%hs", buff);
}
Vedi anche
Sintassi della specifica del formato: printf
e wprintf
funzioni
C4477
C6303
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per