Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Format string mismatch.
Remarks
This warning indicates that a format string specifies a narrow character string, but is being passed a wide character string instead. One cause of the warning is because the meaning of %s and %S flip when used with printf or wprintf. This defect can lead to crashes, in addition to potentially incorrect output.
Code analysis name: WCHAR_CHAR_ARGUMENT_TO_FORMAT_FUNCTION
Example
The following example code generates this warning. buff is a wide character string, but the printf_s call expects a short string as denoted by %s:
#include <stdio.h>
void f()
{
wchar_t buff[5] = L"hi";
printf_s("%s", buff);
}
The following example code remediates this issue by using %ls to specify a wide character string. Alternatively it could have switched to %S, which is a wide string when used with printf like functions. See Format specification syntax: printf and wprintf functions for more options.
#include <stdio.h>
void f()
{
wchar_t buff[5] = L"hi";
printf_s("%ls", buff);
}
See also
Format specification syntax: printf and wprintf functions
C4477
C6302