如何在C中重置数组

时间:2016-02-29 12:52:47

标签: c arrays reset

cards[] = {2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11};

我有这个数组用于我的游戏,当我在我的数组中使用了一个数字时,它将被替换为0.在游戏结束后我需要重置数组,否则0将保留在数组中。

如何重置该阵列?

6 个答案:

答案 0 :(得分:2)

创建一个存储原始值的数组。如果要重置它,请将其复制到原始字符串:

int temp_cards[] = {2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11};
int cards[] = {2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11};
...
memcpy( cards, init_cards, sizeof cards );    // copying temp_card to card and resetting card
建议使用

memcpy,但如果您想保持简单,也可以使用=将一个字符串复制到另一个字符串。

@Dandorid建议的另一种方法很好,我会告诉你如何做到这一点:

void reset (int *cards) {
    int temp_cards[] = {2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11};
    memcpy (cards, temp_cards, sizeof (cards));
}

当您调用它时,传递cards数组。

答案 1 :(得分:1)

为init值定义一个数组,为工作值定义其他数组:

const int init_cards[] = {2,2,2,2,3,3...};
int cards[sizeof init_cards / sizeof init_cards[0]];

...
memcpy( cards, init_cards, sizeof cards );  // reset values

重置 - 将init_cards复制到cards

答案 2 :(得分:1)

创建一个初始化数组的函数;然后在每场比赛开始时给它打电话。

答案 3 :(得分:0)

有两个阵列:一个具有默认设置,另一个具有您修改的阵列。将“重置”副本从默认数组复制到您修改的数组时。

答案 4 :(得分:0)

你可以使用一个函数,比如Initialize,它使用memcopy(或一个手动编码的循环)来为数组填充一些预定值;没有办法将一些初始状态恢复到数组。

答案 5 :(得分:0)

你做不到。您需要创建一个不会更改的数组并将其复制到工作数组中。根据需要重复复制。