trap c arrays loops abort

trap - Abort trampa 6 error en C



abort trap 6 python (2)

Estás escribiendo en la memoria que no tienes:

int board[2][50]; //make an array with 3 columns (wrong) //(actually makes an array with only two ''columns'') ... for (i=0; i<num3+1; i++) board[2][i] = ''O''; ^

Cambia esta línea:

int board[2][50]; //array with 2 columns (legal indices [0-1][0-49]) ^

A:

int board[3][50]; //array with 3 columns (legal indices [0-2][0-49]) ^

Al crear una matriz, el valor utilizado para inicializar [3] indica el tamaño de la matriz.
Al acceder a la matriz existente, los valores de índice se basan en cero .

Para una matriz creada: int board[3][50];
Los índices legales son tablero [0] [0] ... tablero [2] [49]

EDITAR Para abordar el comentario de salida mal y el comentario de inicialización

agregue un "/ n" adicional para formatear la salida:

Cambio:

... for (k=0; k<50;k++) { printf("%d",board[j][k]); } } ...

A:

... for (k=0; k<50;k++) { printf("%d",board[j][k]); } printf("/n");//at the end of every row, print a new line } ...

Inicializar variable de tablero:

int board[3][50] = {0};//initialize all elements to zero

( discusión de inicialización de matriz ... )

Tengo este codigo

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; }

Cuando compilo esto con gcc, está bien. Cuando ejecuto el archivo, aparece el error Abort trap 6 después de ingresar los valores.

He mirado otras publicaciones sobre este error, y no me ayudan.


Prueba esto:

void drawInitialNim(int num1, int num2, int num3){ int board[3][50] = {0}; // This is a local variable. It is not possible to use it after returning from this function. int i, j, k; for(i=0; i<num1; i++) board[0][i] = ''O''; for(i=0; i<num2; i++) board[1][i] = ''O''; for(i=0; i<num3; i++) board[2][i] = ''O''; for (j=0; j<3;j++) { for (k=0; k<50; k++) { if(board[j][k] != 0) printf("%c", board[j][k]); } printf("/n"); } }