設置 | 登錄 | 註冊

作者共發了4篇帖子。

【函数】完全支持Unicode输出的wprintfEx和wputsEx函数

1樓 巨大八爪鱼 2016-6-25 14:28
#include <stdarg.h>
#include <strsafe.h>
#include <Windows.h>

int wprintfEx(const wchar_t *format, ...)
{
    int n;
    wchar_t buffer[2400];
    va_list args;

    va_start(args, format);
    StringCbVPrintfW(buffer, sizeof(buffer), format, args);
    va_end(args);
    n = lstrlenW(buffer);
    WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), buffer, n, NULL, NULL);
    return n;
}

int wputsEx(const wchar_t *wstr)
{
    int n = lstrlenW(wstr);
    WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), wstr, n, NULL, NULL);
    return n;
}

int main(void)
{
    wprintfEx(L"数量: %d\n内容: %s\n", 200, L"abc中文");
    wputsEx(L"哈哈abc\n");
    return 0;
}
2樓 巨大八爪鱼 2016-6-25 14:32
3樓 巨大八爪鱼 2016-6-25 14:36
【自动加\n的wputsEx】
int wputsEx(const wchar_t *wstr)
{
    HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    int n = lstrlenW(wstr);
    WriteConsoleW(hOutput, wstr, n, NULL, NULL);
    WriteConsoleW(hOutput, "\n", 1, NULL, NULL);
    return n + 1;
}

4樓 巨大八爪鱼 2016-6-25 14:37
【自动加\r\n的wputsEx】
int wputsEx(const wchar_t *wstr)
{
    HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    int n = lstrlenW(wstr);
    WriteConsoleW(hOutput, wstr, n, NULL, NULL);
    WriteConsoleW(hOutput, L"\r\n", 2, NULL, NULL);
    return n + 2;
}

內容轉換:

回覆帖子
內容:
用戶名: 您目前是匿名發表。
驗證碼:
看不清?換一張
©2010-2025 Purasbar Ver3.0 [手機版] [桌面版]
除非另有聲明,本站採用知識共享署名-相同方式共享 3.0 Unported許可協議進行許可。