C6302
avviso C6302: stringa di formato non corrispondente: stringa di caratteri passata come parametro <numero> mentre nella chiamata a <funzione> è richiesta una stringa di caratteri di tipo "wide"
L'avviso indica che nella stringa di formato è specificato che è necessaria una stringa di caratteri di tipo "wide".È stata tuttavia passata una stringa di caratteri.Questo errore può causare una qualche forma di arresto anomalo o danneggiamento.
Esempio
Nell'esempio di codice riportato di seguito l'avviso viene generato in quanto viene passata una stringa di caratteri a una funzione wprintf:
#include<stdio.h>
void f()
{
char buff[5] = "hi";
wprintf(L"%s", buff);
}
Nell'esempio di codice riportato di seguito viene utilizzato %hs per specificare una stringa di caratteri a byte singolo con la funzione wprintf:
#include<stdio.h>
void f()
{
char buff[5] = "hi";
wprintf(L"%hs", buff);
}
Per risolvere il problema, nell'esempio di codice riportato di seguito viene utilizzata la funzione protetta di modifica delle stringhe wprintf_s:
#include<stdio.h>
void f()
{
char buff[5] = "hi";
wprintf_s(L"%hs", buff);
}