Condividi tramite


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