Как мне манипулировать битами, чтобы перейти от 0x00 к 0x34, чтобы создать колоду, символизируемую этими значениями - PullRequest
0 голосов
/ 03 апреля 2019

Напишите функцию, которая создает колоду карт, хранящуюся в массиве, используя те же определения, которые использовались в предыдущих задачах.Там будет одна карта каждого набора в массиве.Примечания: • Вы должны выполнить malloc () хранилище для возвращенного массива

Ниже приведен фрагмент кода, который показывает вызов функции и печать шестнадцатеричного значения 51-й карты в колоде.

    14     char * c; 
    15     c = make_deck(); 
    16     printf(" %x\n",*(c+50)); 

мой код

    1 char *make_deck()
    2 {
    3 int i=0;
    4 char *deck;
    5 deck= (char *)malloc(sizeof(char)*52);
    6
    7   if (deck==NULL)
    8    {
    9    printf(“malloc of size %d failed!”,52);
    10    }
    11       for(i=0;i<52;i++)
    12       {
    13          *deck= 0x00;
    14       }

1 Ответ

0 голосов
/ 03 апреля 2019

Переменная i уже увеличивается от 0 (0x00) до 52 (0x34) в цикле. Вы можете присвоить ему *(deck + i) (deck[i]):

#define DECK_SIZE 52

char *make_deck()
{
  char i;
  char *deck;

  deck = malloc(sizeof(char) * DECK_SIZE);

  if (deck == NULL) {
    printf("malloc of size %d failed!", DECK_SIZE);
    return NULL; // stop if malloc failed
  }

  for (i = 0; i < DECK_SIZE; ++i)
    deck[i] = i;

  return deck;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...