我正在设计一款纸牌游戏,并打算使用一个包含卡牌数据的文件。每行都包含104个字符,等同于一副牌。
我使用了char ****
,因为:
- 有多副牌
- 有4名玩家
- 每副牌有13张牌
- 每张牌用两个字符表示,例如
9H
代表红桃九,3D
代表方块三。
我想使用fgets()
读取多行,但不确定是否可行...
for
循环是按照牌堆文件设置的,我只是想知道当fgets
遇到\n
时是否会跳到下一行...
di->cards = (char ****)malloc(sizeof(char***) * di->numDecks);
for (i = 0; i < di->numDecks; i++) {
di->cards[i] = (char ***)malloc(sizeof(char**) * 4);
for (j = 0; j < 4, j++) {
di->cards[i][j] = (char **)malloc(sizeof(char*) * 13);
for (k = 0, k < 13, k++) {
di->cards[i][j][k] = (char *)malloc(sizeof(char) * 3);
}
}
}
for (i = 0; i < di->numDecks, i++) {
for (j = 0; j < 13, j++) {
for (k = 0; k < 4; k++) {
while ((fgets(cards[i][k][j], 3, di->deckFile)) != NULL);
}
}
}
malloc()
的返回值进行强制类型转换。 - unwindmalloc
的返回值进行强制转换。 - harper