setlocale必須
CommandLineToArgvW() の練習。
#define UNICODE #define _UNICODE #include <windows.h> int main(int argc, char *argv[]) { LPWSTR cmdLine; LPWSTR *wargv; int wargc; int i; cmdLine = GetCommandLineW(); wargv = CommandLineToArgvW(cmdLine, &wargc); for (i = 0; i < wargc; i ++) { wprintf(L"Argument[%d] = %s\n", i, wargv[i]); } GlobalFree((HGLOBAL)wargv); return 0; }
次はコンパイルとテスト。
D:\foo>gcc arg_test.c D:\foo>a.exe Argument[0] = a.exe D:\foo>a.exe abc def 日本語 ghi Argument[0] = a.exe Argument[1] = abc Argument[2] = def Argument[3] = Argument[4] = ghi
あれ? 日本語が表示されない。
#include <locale.h> /* 省略 */ int main(int argc, char *argv[]) { /* 省略 */ setlocale(LC_ALL, ""); /* 省略 */ }
最初に setlocale() が必要だった。