There are currently 4 posts.
Font size: Small - 100% (Default)  Content converter: No conversion
 
Clicks Replies
1245 3
【函数】完全支持Unicode输出的wprintfEx和wputsEx函数
巨大八爪鱼
武林盟主 二十一级
Reply
Floor 1 Posted at: 6/25/16 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;
}
巨大八爪鱼
武林盟主 二十一级
Reply
Floor 2 Posted at: 6/25/16 14:32
巨大八爪鱼
武林盟主 二十一级
Reply
Floor 3 Posted at: 6/25/16 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;
}

巨大八爪鱼
武林盟主 二十一级
Reply
Floor 4 Posted at: 6/25/16 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;
}
Reply the post
Content:
User: You are currently anonymous.
Captcha:
Unclear? Try another one.
(Shortcut key: Ctrl+Enter)
Post Information
Clicks: 1245 Replies: 3
Author: 巨大八爪鱼
Last reply: 巨大八爪鱼
Last reply time: 6/25/16 14:37
Bar Good Posts
Announcements