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 %S
einer 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