Windowsのwprintfはややこしい。
printf、_printf_l、wprintf、_wprintf_l | Microsoft Learn
書式指定構文: "printf" および "wprintf" 関数 | Microsoft Learn
ワイド文字(C言語) - 超初心者向けプログラミング入門
iooiau blog: Visual C++ の wprintf の独自仕様
printfで出力の場合、
/* ヘッダファイルのインクルード */ #include <stdio.h> /* 標準入出力 */ #include <locale.h> /* ロケール */ /* main関数の定義 */ int main(void){ /* ロケールのセット. */ setlocale(LC_ALL, "japanese"); /* setlocaleでLC_ALL, "japanese"をセット. */ /* マルチバイト文字の出力.(%c) */ printf("%c\n", 'A'); /* printfで%cでマルチバイト文字'A'を出力. */ /* マルチバイト文字列の出力.(%s) */ printf("%s\n", "ABCDE"); /* printfで%sでマルチバイト文字列"ABCDE"を出力. */ /* ワイド文字の出力.(%lc) */ printf("%lc\n", L'あ'); /* printfで%lcでワイド文字'あ'を出力. */ /* ワイド文字列の出力.(%ls) */ printf("%ls\n", L"あいうえお"); /* printfで%lsでワイド文字列"あいうえお"を出力. */ /* ワイド文字の出力.(%C) */ printf("%C\n", L'あ'); /* printfで%Cでワイド文字'あ'を出力. */ /* ワイド文字列の出力.(%S) */ printf("%S\n", L"あいうえお"); /* printfで%Sでワイド文字列"あいうえお"を出力. */ /* プログラムの終了 */ return 0; }
こう書くと、

こうなる。
wprintfだと、
こうで、

こうなる。
ポイントは、
1.wprintfで%C、%Sはchar。(Linuxでは%ls、%lcと同じでwchar_t。)
2.wprintfで%c、%sはwchat_t。(Linuxでは%cはchar、char配列の場合%hsを使う。)
3.wprintfでcharを使う場合は、%hc、%hsも使える。
ややこしい・・・。
Sample/c/wprintf/wprintf_Windows/src/wprintf at master · bg1bgst333/Sample · GitHub