C-纸牌符号问题纸牌

我是工程系的学生。作为考试,教授要求我们用C语言编写纸牌游戏。从基本的角度来说,我很难展示卡片的花色。如果我将十进制数转换为ASCII符号,则输出将返回问号“?”;有什么方法可以显示符号而不是问号吗? 我正在尝试使用ASCII获得更多图形符号。这是我编译的代码。在编译过程中,它不返回错误,但可执行文件为空,不返回任何内容。我使用的编译器是Dev-C ++。 可能是我的控制台字体不支持此字符集吗?如果是,是否可以对其进行修改以使其兼容?

测试1:

#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <fcntl.h>
#include <windows.h>

typedef enum { cuori, quadri, fiori, picche }  semi;
typedef enum { coperta, scoperta, eliminata }  status;

typedef struct _card
{
    int valore;
    semi seme;
    status stato;
} card;


const wchar_t visSemi[][2] = { L"\u2665", L"\u2660", L"\u2663", L"\u2666" };


void visCard(card *c)
{
    _setmode(_fileno(stdout), _O_U16TEXT);

    if (c->stato == scoperta)
    {
        switch (c->valore)
        {
        case 1:
            printf ("A\n");
            break;
        case 11:
            printf ("J\n");
            break;
        case 12:
            printf("Q\n");
            break;
        case 13:
            printf("K\n");
            break;
        }

        printf("\n", visSemi[c->seme]);
    }
    else
    {
        if (c->stato == coperta)
            printf("??\n");
    }

    _setmode(_fileno(stdout), _O_TEXT);
}

int main()
{
    card pila[8] = {
                     {  1, cuori, scoperta },
                     { 11, quadri, scoperta },
                     { 12, fiori, scoperta },
                     { 13, picche, eliminata },
                     {  1, quadri, scoperta },
                     { 11, fiori, scoperta },
                     { 12, picche, scoperta },
                     { 13, cuori, coperta },
                   };

    int i;
    for (i = 0; i < 8; i++)
        visCard(&pila[i]);

    return 0;
}

测试2(通常):

#include <stdio.h>
#include <io.h>
#include <fcntl.h>

int main (void){
  _setmode(_fileno(stdout),_O_U16TEXT);

  wprintf(L"\x043a\x043e\x0448\x043a\x0430\x65e5\x672c\x56fd\n");
  return 0;
}
评论