Member 14827806 Ответов: 1

Есть ли способ отобразить символ масти покерных карт (червы, бубны, Трефы, Пики) в C?


Привет всем, в качестве экзаменационного теста я должен запрограммировать пасьянс. Мне трудно показать масти карт. Если я преобразую десятичное число в символ ASCII, выходные данные возвращают вопросительный знак "?"; то же самое, если я копирую символ семени, преобразуется непосредственно в вопросительный знак "?" из компилятора. Есть ли способ показать знак вместо вопросительного знака? В качестве компилятора я использую Dev-C ++, а язык-C.
Может кто-то пожалуйста, помогите мне?

Что я уже пробовал:

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

#define PICCHE L"\u2660"
#define FIORI L"\u2663"
#define CUORI L"\u2665"
#define QUADRI L"\u2666"

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

	printf  ("A\n" QUADRI);
	printf  ("K\n" FIORI);
	printf  ("Q\n" CUORI);
	printf  ("J\n" PICCHE);

	_setmode(_fileno(stdout), _O_TEXT);

	return 0;
}

Я тоже пытался, но он возвращает знак вопроса :

#include <stdio.h>
int main ()
{
	printf ("%c",5);
	return 0;
}

1 Ответов

Рейтинг:
8

Maciej Los

Взгляните на документацию MSDN: _setmode | Майкрософт документы[^]

// crt_setmodeunicode.c
// This program uses _setmode to change
// stdout to Unicode. Cyrillic and Ideographic
// characters will appear on the console 
//(if your console font supports those character sets). -- this part is very important!

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

int main(void) {
    _setmode(_fileno(stdout), _O_U16TEXT);
    wprintf(L"\x043a\x043e\x0448\x043a\x0430 \x65e5\x672c\x56fd\n"); //wprintf is used instaed of printf
    return 0;
}


Member 14827806

Проблема решена, большое вам спасибо

Maciej Los

Всегда пожалуйста.