我想在字符,其中包括的阵列修改单个随机元素'0'
,'1'
和'2'
。只有'0'
可以修改,这就是为什么我首先将它们的索引放在另一个数组中的原因(如果有一种方法可以更有效地做到这一点,我很乐意更改它)。
但是,我得到了
cygwin_exception::open_stackdumpfile: Dumping stack trace
我知道问题来自此功能
void ai_move(char (*array)[10])
{
srand (time(NULL));
unsigned char* possible_indexes = {0};
int cpt = 0;
for (int i = 0; i < MAXDATASIZE - 1; ++i)
if ((*array)[i] == '0')
{
possible_indexes[cpt] = i;
++cpt;
}
int rand_index = rand() % (sizeof(possible_indexes) - 1);
(*array)[possible_indexes[rand_index]] = '1';
}
我这样称呼它:
ai_move(&grid);
grid
包含我要修改的char数组,并定义为:
char grid[MAXDATASIZE] = {'0', '0', '0', '0', '0', '0', '0', '0', '0'};
我知道问题可能来自于我grid
的论证方式,但是经过数小时的搜索,我找不到能够改变任何东西的解决方案。
感谢你们对我的帮助。
unsigned char* possible_indexes = {0};
好了,您声明了一个指针,但是没有为其分配足够的内存(恰恰您甚至没有分配内存),并在以后的迭代中尝试在无效的位置写入。
possible_indexes[cpt] = i;
要么先分配内存possible_indexes
,然后再尝试将其写入或声明为具有所需大小的数组。
注意-关于sizeof(possible_indexed)
此-
int rand_index = rand() % (sizeof(possible_indexes) - 1);
这将给出指针的大小,而不是通常期望的大小,即元素的数量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句