首页 > 解决方案 > 结构数组中的用户输入结构数组上的 Malloc

问题描述

struct Card
{
    char *color;
    int value ;

};
struct Player
{
    Card* Hand;
    Card* deck;
};
struct Player player[MaximumNumberOfPlayers] = { //
    {(struct Card*) malloc(numberOfCards * sizeof(struct Card)), (struct Card*) malloc(numberOfCards * sizeof(struct Card))}, //
    {(struct Card*) malloc(numberOfCards * sizeof(struct Card)), (struct Card*) malloc(numberOfCards * sizeof(struct Card))}, //
    {(struct Card*) malloc(numberOfCards * sizeof(struct Card)), (struct Card*) malloc(numberOfCards * sizeof(struct Card))}, //
    {(struct Card*) malloc(numberOfCards * sizeof(struct Card)), (struct Card*) malloc(numberOfCards * sizeof(struct Card))}, //
    {(struct Card*) malloc(numberOfCards * sizeof(struct Card)), (struct Card*) malloc(numberOfCards * sizeof(struct Card))}, //
    {(struct Card*) malloc(numberOfCards * sizeof(struct Card)), (struct Card*) malloc(numberOfCards * sizeof(struct Card))}};

你好上面的代码可以正常工作,但是,有没有一种正确的方法来创建一个结构数组(播放器),其中包含结构(卡片)的用户输入数组?

struct Player player[MaximumNumberOfPlayers] = { 
    {(struct Card*) malloc((numberOfCards) * sizeof(struct Card)), 
     (struct Card*) malloc((numberOfCards) * sizeof(struct Card))}};

for (int i = 1; i < gameSettings.numberOfPlayers; i++)
{
  player[i] = player[i - 1];
}

正在尝试这样的事情,但它无法工作,还有一种方法可以从用户输入中制作一个播放器结构数组吗?

标签: cstructmalloc

解决方案


You probably want this:

struct Player player[MaximumNumberOfPlayers];

for (int i = 0; i < gameSettings.numberOfPlayers; i++)
{
    player[i]->deck = malloc((numberOfCards) * sizeof(struct Card));
}

推荐阅读