Card *getCard (int aFace, int aSuit) { initCardList(); int no = 32; if (aFace >= 7 && aFace <= FACE_ACE && aSuit >= 1 && aSuit <= 4) no = (aFace-7)*4+(aSuit-1); return cList[no]; }
//清空链表中数据,已保存文件和链表中的数据同步 int getCard() { int nCount = 0; //卡信息数 int i = 0; Card* pCard = NULL; IpCardNode node = NULL; IpCardNode cur = NULL; //清除链表中已存在的数据,并初始化 if (cardList != NULL) { releaseCardList(); } initCardList(); //获取卡信息个数 nCount = getCardCount(CARDPATH); //动态分配内存保存卡信息 pCard = (Card*)malloc(sizeof(Card) * nCount); if (pCard == NULL) { return FALSE; } //如果返回FALSE,表示读取卡信息失败 if (FALSE == readCard(pCard, CARDPATH)) { free(pCard); pCard = NULL; return FALSE; } //node->next = NULL; for (i = 0, node = cardList; i < nCount; i++) { if (i == 0) { node->data = pCard[i]; node->next = NULL; } else { //为节点分配内存 cur = (IpCardNode)malloc(sizeof(CardNode)); //如果分配内存失败,则返回 if (cur == NULL) { free(pCard); return FALSE; } //初始化新的空间,全部赋值为零 memset(cur, 0, sizeof(CardNode)); //将卡信息保存到节点中 cur->data = pCard[i]; cur->next = NULL; //将节点添加到链表结尾 node->next = cur; node = cur; } } //free(cur); free(pCard); pCard = NULL; return TRUE; }