目前共有4篇帖子。 内容转换:不转换▼
 
点击 回复
247 3
【函数】完全支持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;
}

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:247 回复数:3
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2016-6-25 14:37
 
©2010-2024 Arslanbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。