Я предполагаю, что sizeof(short)==2
в вашей системе, ваш набор символов - ASCII, и вы считаете, что вы можете заполнить короткий массив числовыми значениями своих мастей и карт бок о бок без каких-либо проблем.
Если продолжить с этими допущениями, вот что не так с вашим кодом:
suit[x] - '0'
Это был бы правильный способ преобразования символа ASCII, представляющего цифру, в числовое значение цифры.Однако значения в масти 'S', 'H', 'D',
и 'C'
, так что это не сработает.
(suit[0] - '0')+ faces[i]-'0'
Это не приведет к созданию представления в cards[i]
со значением "<suit-value><card-value>
", каждая char
заполняет одну половину short
.Он собирается создать один char
с числовым значением suit[0] - '0' + faces[i] - '0'
.
printf("%c", cards[5]);
. Правильный формат для печати short
- %hd
.
. Также,если вы пытаетесь смоделировать колоду стандартных игральных карт, где значение карты «10» в faces
?
Это все, на что я мог бы указать кратким просмотром вашего кода.
Я рекомендую вам представлять комбинированные карты мастей / лицев в виде строк , а не shorts
.Измените cards
на массив char[52][3]
, инициализируйте его нулем, затем создайте цикл, который проходит через faces
и suit
и заполните cards
функцией построения строк, такой как snprintf
.