Программа застревает в функции сделки, она не выводит следующий оператор в main после вызова. Предполагается, что функция раздачи чередуется между игроками, раздавая по 5 карт каждому, используя следующий связанный список. У каждой карты есть лицо и масть.
typedef struct card_s {
char suit[20];
int face;
struct card_s *next;
}card;
void Dealcards(card** deck,card** p1,card** p2,card** Tail,card** Tail2 ) {
int i;
card* temp = NULL;
card* prev = NULL;
card* current = NULL;
card* temp2 = NULL;
card* prev2 = NULL;
for (i = 0; i < 10; i += 1) {
current = *deck;
if (i % 2 == 0) { //alternate who card is deal to
temp = (card*)malloc(sizeof(card));
temp->face = current->face; //give p1 card value
strcpy(temp->face, current->face); //give p1 card suit
temp->next = NULL;
if (prev == NULL){
*p1 = temp;
}
else {
prev->next = temp; //next card
}
prev = temp;
prev->next = NULL;
}
else { //cpu dealt hand
temp2 = (card*)malloc(sizeof(card));
temp->face = current->face; //give p2 card value
strcpy(temp2->face, current->face); //give p2 card suit
temp2->next = NULL;
if (prev2 == NULL) {
*p2 = temp2;
}
else {
prev2->next = temp2; //next card
}
prev2 = temp2;
prev->next == NULL;
}
}
*Tail = prev;
*Tail2 = prev2;
return;
}
int main() {
char YorN = 'Y';
int playerCoins=100;
int p1handlength;
card *cards = NULL;
card *player1 = NULL;
card *player2 = NULL;
card *Tail1 = NULL;
card *Tail2 = NULL;
while (YorN == 'Y') {
printf("********Now playing Jacks Or Better********\n");
makeDeck(&cards); //create deck
int decklength = findLength(cards); //gets length of deck used in shuffle function
//shuffleDeck(&cards,decklength); //shuffle deck
printf("Dealing cards...\n\n");
Dealcards(&cards, &player1, &player2, &Tail1, &Tail2); //deal cards to cpu and player 2 (cpu)
printf("P1 firstcard:\n");
printf("Player 1's cards:\n");
p1handlength = findLength(player1);
PrintHand(player1,p1handlength);
}
return 0;
}
Функция должна раздавать 5 карт каждой руке p1 и p2. Я не могу понять, что он в настоящее время делает и что застревает.