我得到了大部分工作,包括随机化和洗牌,但是在分配正确的面/西装值时,我做不到正确。另外,我正在“中止(核心转储)”,可能是因为我几乎不知道我在做什么malloc
(如果有的话,在这种情况下)。
typedef struct cards {
char suits[4][9], faces[13][6];
int suit, face, card;
} cards;
const int SHOE_SIZE = DECK_SIZE * numberOfDecks; // user given input, please disregard
cards shoe[SHOE_SIZE];
init_struct(&shoe);
cards *shoe_p = malloc(sizeof(cards) + 1000 * sizeof(int));
shoe_p = shoe;
int i;
for (i = 0; i < SHOE_SIZE; i++) {
shoe[i].card = i;
shoe[i].suit = shoe[i].card % 4; // maybe one of these should be % and another /
shoe[i].face = shoe[i].card % 13; // but when I try that, I get strings like "ace of ace"
printf("card #%d = %s of %s\n", i+1, shoe->faces[shoe[i].face], shoe->suits[shoe[i].suit]);
}
free(shoe);
我遗漏的代码部分无疑是所描述问题的根源。如果我应该提供更多信息,请告诉我!
编辑:附加问题;我是否以适当的方式访问我的结构成员“面孔”和“西装”?对我来说似乎是这样,但话又说回来,我看不出还有什么会导致我的字符串输出奇怪的(参见代码中的注释)。
另外,我可以将 SHOE_SIZE 作为我的数组的成员,并以相同的方式(shoe->variable)访问它,而不必先通过变量 SHOE_SIZE 分配它吗?