作者共發了4篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:不轉換▼
 
點擊 回復
321 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)
 

本帖信息

點擊數:321 回複數:3
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2016-6-25 14:37
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。