This is a "mistake", although the design behavior. The initial implementation of Visual C ++ for large printf and scanf functions preceded their standardization in C, and in some cases the behavior deviates from what is required in the specification of the standard C library.
C %s %c char, l , wchar_t .
Visual ++ () %s %c "" . printf scanf char, wchar_t. "" , %s %c. , h l , .
Visual ++ Unicode _TCHAR <tchar.h>. , , Visual ++ ( , , .).