Condividi tramite


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);
}