【发布时间】:2014-12-13 09:34:18
【问题描述】:
我有这个代码:
void drawInitialNim(int num1, int num2, int num3)
{
int board[2][50]; //make an array with 3 columns
int i; // i, j, k are loop counters
int j;
int k;
for(i=0;i<num1+1;i++) //fill the array with rocks, or 'O'
board[0][i] = 'O'; //for example, if num1 is 5, fill the first row with 5 rocks
for (i=0; i<num2+1; i++)
board[1][i] = 'O';
for (i=0; i<num3+1; i++)
board[2][i] = 'O';
for (j=0; j<2;j++) { //print the array
for (k=0; k<50;k++) {
printf("%d",board[j][k]);
}
}
return;
}
int main()
{
int numRock1,numRock2,numRock3;
numRock1 = 0;
numRock2 = 0;
numRock3 = 0;
printf("Welcome to Nim!\n");
printf("Enter the number of rocks in each row: ");
scanf("%d %d %d", &numRock1, &numRock2, &numRock3);
drawInitialNim(numRock1, numRock2, numRock3); //call the function
return 0;
}
当我用 gcc 编译它时,它很好。运行文件时,输入值后出现 abort trap 6 错误。
我查看了有关此错误的其他帖子,但它们对我没有帮助。
【问题讨论】:
-
int board[2][50];-->int board[3][50]; -
但即便如此,50 也是一个可能会溢出的神奇数字。