【发布时间】:2015-02-18 21:12:47
【问题描述】:
typedef enum {Clubs = 1, Diamonds, Hearts, Spades} suit_t;
typedef enum {Ace = 1, Two = 2, Three = 3, Four = 4, Five = 5,
Six = 6, Seven = 7, Eight = 8, Nine = 9, Ten = 10,
Jack = 11, Queen = 12, King = 13} face_t;
typedef struct card_t
{
suit_t suit;
face_t face;
} card;
typedef struct stack_t
{
struct card_t deck[53];
int size;
} stack_h;
void shuffle_deck(stack_h *stack)
{
stack_h temp, *cardptr;
int i,num;
for(i = 0; i < stack->size; i++)
{
i = rand() %stack->size;
*cardptr = *stack;
temp = *cardptr;
*cardptr = *stack;
*stack = temp;
}
}
所以我尝试了许多不同的方法来让我的牌组洗牌,但不幸的是我没有运气,我想做的就是很好地洗牌它编译的牌组,但是当它洗牌时,它会出现分段错误。关于如何解决它的任何想法?一切正常,但洗牌功能。
【问题讨论】:
-
你做过堆栈跟踪吗?此外,在发布问题时,请尝试仅发布相关代码。
shuffle_deck在这种情况下。它使人们更容易看到他们何时不必查看您的所有其他代码。 -
在随机播放中,您正在为堆栈分配一个随机整数
*stack = rand() %stack->size;——我认为这不是您想要的。 -
@dubstylee 谢谢我真的不知道我需要包括什么
-
@user590028 你说得对,但是我分配的 int 该怎么办?
-
您的代码对
stack执行了各种操作,但看起来您想要操作的是stack->deck的元素。
标签: c arrays pointers enums segmentation-fault