Condividi tramite


Avviso C6303

Mancata corrispondenza della stringa di formato.

Osservazioni:

Questo avviso indica che una stringa di formato specifica una stringa di caratteri stretta, ma viene passata una stringa di caratteri wide. 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: WCHAR_CHAR_ARGUMENT_TO_FORMAT_FUNCTION

Esempio

Il codice di esempio seguente genera questo avviso. buff è una stringa di caratteri wide, ma la printf_s chiamata prevede una stringa breve indicata da %s:

#include <stdio.h>

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

Il codice di esempio seguente corregge questo problema usando %ls per specificare una stringa di caratteri wide. In alternativa, potrebbe essere passato a %S, che è una stringa wide se usata con printf funzioni simili. Per altre opzioni, vedere Sintassi delle specifiche del formato: printf e wprintf funzioni .

#include <stdio.h>

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

Vedi anche

Sintassi della specifica del formato: printf e wprintf funzioni
C4477
C6302