Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Neshoda řetězců formátu
Poznámky
Toto upozornění značí, že formátovací řetězec určuje úzký znakový řetězec, ale místo toho se předává široký znakový řetězec. Jednou z příčin upozornění je to, že význam %s a %S překlopení při použití s printf nebo wprintf. Tato chyba může vést k chybovému ukončení, kromě potenciálně nesprávného výstupu.
Název analýzy kódu: WCHAR_CHAR_ARGUMENT_TO_FORMAT_FUNCTION
Příklad
Následující ukázkový kód vygeneruje toto upozornění.
buff je řetězec širokého znaku printf_s , ale volání očekává krátký řetězec jako označený %s:
#include <stdio.h>
void f()
{
wchar_t buff[5] = L"hi";
printf_s("%s", buff);
}
Následující příklad kódu opraví tento problém pomocí %ls k určení širokého znakového řetězce. Alternativně mohlo dojít k přepnutí na %S, což je široký řetězec při použití s funkcemi printf jako. Další možnosti najdete v tématu Syntaxe specifikace formátu: printf a wprintf funkce .
#include <stdio.h>
void f()
{
wchar_t buff[5] = L"hi";
printf_s("%ls", buff);
}
Viz také
Syntaxe specifikace formátu: printf a wprintf funkce
C4477
C6302