Freigeben über


Warnung C6303

Zeichenfolgenkonflikt formatieren.

Hinweise

Diese Warnung gibt an, dass eine Formatzeichenfolge eine schmale Zeichenfolge angibt, aber stattdessen eine breite 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: WCHAR_CHAR_ARGUMENT_TO_FORMAT_FUNCTION

Beispiel

Im folgenden Beispielcode wird diese Warnung generiert. buff ist eine breite Zeichenfolge, aber der printf_s Aufruf erwartet eine kurze Zeichenfolge, wie angegeben durch %s:

#include <stdio.h>

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

Im folgenden Beispielcode wird dieses Problem behoben, indem %ls eine breite Zeichenfolge angegeben wird. Alternativ könnte es zu %Seiner breiten Zeichenfolge gewechselt sein, die bei Verwendung mit printf ähnlichen Funktionen eine breite Zeichenfolge ist. Weitere Optionen finden Sie unter "Formatspezifikationssyntax: printf und wprintf Funktionen ".

#include <stdio.h>

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

Siehe auch

Formatspezifikationssyntax: printf und wprintf Funktionen
C4477
C6302