即時動態二維數組試圖將值插入到字符的動態二維數組:插入到在C
theBoard->_board[row][col] = val;
但上的焦炭的每個分配到(行,列),它也把它(第一行,第八行)。 可能是什麼問題?
這裏的陣列分配:
if ((new = (BoardP) malloc(sizeof(struct Board))) == NULL)
{
reportError(MEM_OUT);
return NULL;
}
if ((new->_board = (char**) malloc(rows * sizeof(char*))) == NULL)
{
reportError(MEM_OUT);
return NULL;
}
int i,j;
for (i=0;i<rows;i++)
{
if ((new->_board[i] = (char*) malloc(cols * sizeof(char))) == NULL)
{
reportError(MEM_OUT);
return NULL;
}
當我插入一個 'X' 和印刷用:
BoardP b = createNewDefaultBoard();
b->_board[2][0] = 'X';
printBoard(b,0,0);
我得到這樣的輸出:
0 1 2 3 4 5 6 7 8 9
0
1 X
2 X
3
4
5
6
7
8
9
即使您編碼爲C,請避免使用C++中保留關鍵字「new」。另外,分配之後是否初始化內存(以避免讀取垃圾)? – ziu
首先:不要施加'malloc'的結果 – Constantinius
是的,我正在初始化數組。 – user1071351