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