card game in c, shuffle linked list -
i trying shuffle linked list in c. idea move list array of card shuffle array , put in linked list. when build ok when id use debugger program stops , says "triggered breakpoint" , didn't different . help!
here of code
typedef struct card { int rank; int suit; }card; void shuffledeckplay(cardlist *deck1, int size) { card *array = (card*)malloc(sizeof(card)); (int = 0; < size ; i++) { array[i] = deck1->front->data; array = realloc(array, sizeof(card)); dequeue(deck1); } int i, j; card temp; (i = 0; < size; i++) { j = rand() % size; temp = array[i]; array[i] = array[j]; array[j] = temp; } (int = 0; < size; i++) { enqueue(array[i], deck1); } }
array large enough store 1 card. after realloc, realloc-ing size of one. syntactically there nothing wrong, during runtime array[i] go out of bounds , debugger picking up. best solution allocate correct number immediately:
card * array = (card*)malloc(numcards*sizeof(card)); however if want re-allocate in loop loop should this:
for (int = 0; < size; i++) { array = (card*)realloc(array, (i+1)*sizeof(card)); array[i] = deck1->front->data; dequeue(deck1); }
Comments
Post a Comment