Freigeben über


Warnung C6302

Zeichenfolgenkonflikt formatieren.

Hinweise

Diese Warnung gibt an, dass eine Formatzeichenfolge eine breite Zeichenfolge angibt, aber stattdessen eine schmale Zeichenfolge übergeben wird. Eine Ursache für die Warnung ist, dass die Bedeutung und das Kippen %s%S bei Verwendung mit printf oder wprintf. Dieser Fehler kann zu Abstürze führen, zusätzlich zu potenziell falschen Ausgaben.

Codeanalysename: CHAR_WCHAR_ARGUMENT_TO_FORMAT_FUNCTION

Beispiel

Der folgende Code generiert diese Warnung. buff ist eine schmale Zeichenfolge, ist aber wprintf_s die breite Zeichenfolgenvariante printf_s und erwartet daher %s breite Breite:

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

Der folgende Beispielcode behebt dieses Problem mithilfe %hs der Angabe einer Zeichenfolge mit einem einzelnen Byte. Alternativ könnte es zu %Seiner schmalen Zeichenfolge gewechselt sein, die bei Verwendung mit wprintf ähnlichen Funktionen eine schmale Zeichenfolge ist. Weitere Optionen finden Sie unter "Formatspezifikationssyntax: printf und wprintf Funktionen ".

void f()
{
    char buff[5] = "hi";
    wprintf_s(L"%hs", buff);
}

Siehe auch

Formatspezifikationssyntax: printf und wprintf Funktionen
C4477
C6303