我想修改一個字符數組中的單個隨機元素,其中包括'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 grid[MAXDATASIZE] = {'0', '0', '0', '0', '0', '0', '0', '0', '0'};
我知道問題可能來自我給grid
作爲參數的方式,但在搜索我找不到這將改變什麼的溶液小時後。
謝謝你幫助我。
你確定你的數組長度等於MAXDATASIZE嗎? – Ashalynd
因爲'possible_indexes'只包含一個值,所以在嘗試訪問'possible_indexes [cpt]'時可能會出現段錯誤 – ForceBru
您的網格數組只有9個條目。什麼是MAXDATASIZE?是10嗎? – Ashalynd