繁体   English   中英

如何在C Win32控制台应用程序中打印名片花色字符?

[英]How can I print card suit characters in C Win32 console application?

我已经看到了一些有关如何打印这些字符的问题,但是这些方法似乎都不起作用。 我怀疑是因为我根据阅读的一些评论制作了Win32控制台应用程序。 这是我目前在代码中尝试过的示例。 它仅打印问号框,或者如果我将其更改,则会得到问号或随机符号。

我试图在顶部定义这些。

#define SPADE '\x06'
#define CLUB  '\x05'
#define HEART '\x03'
#define DIAMOND '\x04'

内部函数,这些是我尝试过的一些东西。 我离开了S,D,H,C,以防万一。

    printf("%lc", SPADE);
    //printf("♠");
    //printf("S");

    printf("%lc", HEART);
    //printf("♥");
    //printf("H");

    printf("%lc", DIAMOND);
    //printf("♦");
    //printf("D");

    printf("%lc", CLUB);
    //printf("♣");
    //printf("C");

Windows需要UTF-16 wchar_t和宽字符功能。

#include <windows.h> 

int main()
{
    DWORD n;
    HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
    const wchar_t *buf = L"♠♥♦♣\n";
    WriteConsoleW(hout, buf, wcslen(buf), &n, 0);
    return 0;
}

以下代码将与Visual Studio一起编译:

#include <stdio.h>
#include <io.h> //for _setmode
#include <fcntl.h> //for _O_U16TEXT

int main()
{
    _setmode(_fileno(stdout), _O_U16TEXT);
    wprintf(L"♠♥♦♣\n");
    return 0;
}

将模式设置为UTF-16后,如果要再次使用printf ,则必须调用_setmode(_fileno(stdout), _O_TEXT)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM