Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int _wprintf(const wchar_t* format, ...)
- {
- int r;
- static int utf8ModeSet = 0;
- static wchar_t* bufWchar = NULL;
- static size_t bufWcharCount = 256;
- static char* bufMchar = NULL;
- static size_t bufMcharCount = 256;
- va_list vl;
- int mcharCount = 0;
- if (utf8ModeSet == 0)
- {
- if (!SetConsoleOutputCP(CP_UTF8))
- {
- DWORD err = GetLastError();
- fprintf(stderr, "SetConsoleOutputCP(CP_UTF8) failed with error 0x%Xn", err);
- utf8ModeSet = -1;
- }
- else
- {
- utf8ModeSet = 1;
- }
- }
- if (utf8ModeSet != 1)
- {
- va_start(vl, format);
- r = vwprintf(format, vl);
- va_end(vl);
- return r;
- }
- if (bufWchar == NULL)
- {
- if ((bufWchar = malloc(bufWcharCount * sizeof(wchar_t))) == NULL)
- {
- return -1;
- }
- }
- for (;;)
- {
- va_start(vl, format);
- r = vswprintf(bufWchar, bufWcharCount, format, vl);
- va_end(vl);
- if (r < 0)
- {
- break;
- }
- if (r + 2 <= bufWcharCount)
- {
- break;
- }
- free(bufWchar);
- if ((bufWchar = malloc(bufWcharCount * sizeof(wchar_t) * 2)) == NULL)
- {
- return -1;
- }
- bufWcharCount *= 2;
- }
- if (r > 0)
- {
- if (bufMchar == NULL)
- {
- if ((bufMchar = malloc(bufMcharCount)) == NULL)
- {
- return -1;
- }
- }
- for (;;)
- {
- mcharCount = WideCharToMultiByte(CP_UTF8,
- 0,
- bufWchar,
- -1,
- bufMchar,
- bufMcharCount,
- NULL,
- NULL);
- if (mcharCount > 0)
- {
- break;
- }
- if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
- {
- return -1;
- }
- free(bufMchar);
- if ((bufMchar = malloc(bufMcharCount * 2)) == NULL)
- {
- return -1;
- }
- bufMcharCount *= 2;
- }
- }
- if (mcharCount > 1)
- {
- DWORD numberOfCharsWritten, consoleMode;
- if (GetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), &consoleMode))
- {
- fflush(stdout);
- if (!WriteConsoleA(GetStdHandle(STD_OUTPUT_HANDLE),
- bufMchar,
- mcharCount - 1,
- &numberOfCharsWritten,
- NULL))
- {
- return -1;
- }
- }
- else
- {
- if (fputs(bufMchar, stdout) == EOF)
- {
- return -1;
- }
- }
- }
- return r;
- }
- _wprintf(L"xA0xA1xA2xA3xA4xA5xA6xA7"
- L"xA8xA9xAAxABxACxADxAExAF"
- L"xB0xB1xB2xB3xB4xB5xB6xB7"
- L"xB8xB9xBAxBBxBCxBDxBExBF"
- L"n"
- L"xC0xC1xC2xC3xC4xC5xC6xC7"
- L"xC8xC9xCAxCBxCCxCDxCExCF"
- L"xD0xD1xD2xD3xD4xD5xD6xD7"
- L"xD8xD9xDAxDBxDCxDDxDExDF"
- L"n"
- L"xE0xE1xE2xE3xE4xE5xE6xE7"
- L"xE8xE9xEAxEBxECxEDxEExEF"
- L"xF0xF1xF2xF3xF4xF5xF6xF7"
- L"xF8xF9xFAxFBxFCxFDxFExFF"
- L"n");
- _wprintf(L"x391x392x393x394x395x396x397"
- L"x398x399x39Ax39Bx39Cx39Dx39Ex39F"
- L"x3A0x3A1x3A2x3A3x3A4x3A5x3A6x3A7"
- L"x3A8x3A9x3AAx3ABx3ACx3ADx3AEx3AFx3B0"
- L"n"
- L"x3B1x3B2x3B3x3B4x3B5x3B6x3B7"
- L"x3B8x3B9x3BAx3BBx3BCx3BDx3BEx3BF"
- L"x3C0x3C1x3C2x3C3x3C4x3C5x3C6x3C7"
- L"x3C8x3C9x3CAx3CBx3CCx3CDx3CE"
- L"n");
- _wprintf(L"x410x411x412x413x414x415x401x416x417"
- L"x418x419x41Ax41Bx41Cx41Dx41Ex41F"
- L"x420x421x422x423x424x425x426x427"
- L"x428x429x42Ax42Bx42Cx42Dx42Ex42F"
- L"n"
- L"x430x431x432x433x434x435x451x436x437"
- L"x438x439x43Ax43Bx43Cx43Dx43Ex43F"
- L"x440x441x442x443x444x445x446x447"
- L"x448x449x44Ax44Bx44Cx44Dx44Ex44F"
- L"n");
- ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿
- ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß
- àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
- ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰ
- αβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ
- АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
- абвгдеёжзийклмнопрстуфхцчшщъыьэюя
- printf("my name is Sexe9nn");
Add Comment
Please, Sign In to add comment