I defined a function for initialising a 2D array through pointers and at the same time fell it with random values.
Then I print it and I don't see the expected values. Where is the bug in my code? I've been looking for hours.
#define MATRIX_SIZE 3
int **initialize_matrix(size_t m, size_t n){
int i1,i2;
int **ptr1=(int **)malloc(sizeof(int *)*m*n);
int *ptr2=(int *)malloc(sizeof(int)*m);
srand(time(0));
for(i1=0;i1<MATRIX_SIZE;i1++){
for(i2=0;i2<MATRIX_SIZE;i2++){
ptr2[i2]=rand()%10;
printf("%d ",ptr2[i2]);
}
}
for(i1=0;i1<MATRIX_SIZE;i1++){
ptr1[i1]=ptr2+m*i1;
}
printf("\nFinished generating\n");
return ptr1;
}
void print_matrix(int** matrix_to_print){
int i1,i2;
for(i1=0;i1<MATRIX_SIZE;i1++)
for(i2=0;i2<MATRIX_SIZE;i2++){
printf("%d ",matrix_to_print[i1][i2]);
if(i2==MATRIX_SIZE-1)
printf("\n");
}
}
This prints:
2 4 8
0 6 7
6 4 4
Finished generating
Matriz 1:
6 4 4
135113 0 0
0 0 0
int **ptr1=(int **)malloc(sizeof(int *)*m*n);int *ptr2=(int *)malloc(sizeof(int)*m);: should beint **ptr1=(int **)malloc(sizeof(int *)*n);int *ptr2=(int *)malloc(sizeof(int)*m*n);. Why isMATRIX_SIZEused in the functioninitialize_matrix(size_t m, size_t n)?